成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長(zhǎng)資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

vue運(yùn)用了哪些模式

vue運(yùn)用的設(shè)計(jì)模式:1、單例模式,確保一個(gè)類(lèi)只有一個(gè)實(shí)例對(duì)象,并提供一個(gè)全局訪問(wèn)點(diǎn)供其訪問(wèn)。2、工廠模式,是用來(lái)創(chuàng)建對(duì)象的一種模式,不必暴露構(gòu)造函數(shù)的具體邏輯,而是將邏輯封裝在一個(gè)個(gè)函數(shù)之中。3、裝飾器模式,允許向現(xiàn)有的函數(shù)添加新的功能,同時(shí)不改變其結(jié)構(gòu)。4、策略模式,就是定義一系列的算法,把他們一個(gè)個(gè)封裝起來(lái),并且使他們可以相互替換。5、發(fā)布訂閱者模式。

vue運(yùn)用了哪些模式

本教程操作環(huán)境:windows7系統(tǒng)、vue3版,DELL G3電腦。

什么是設(shè)計(jì)模式:

設(shè)計(jì)模式的原則是找出程序中的變化,并將變化封裝起來(lái),實(shí)現(xiàn)高效的可復(fù)用性。核心在于意圖,而不在結(jié)構(gòu)。通過(guò)設(shè)計(jì)模式可以幫助我們?cè)鰪?qiáng)代碼的可重用性、可擴(kuò)充性、 可維護(hù)性、靈活性。我們使用設(shè)計(jì)模式的最終目的是為了實(shí)現(xiàn)代碼的高類(lèi)聚低耦合。你是否思考過(guò)這樣的一個(gè)問(wèn)題,如何讓代碼寫(xiě)的更有健壯性,其實(shí)核心在于把握變與不變。確保變的部分更加靈活,不變的地方更加穩(wěn)定,而使用設(shè)計(jì)模式可以讓我們達(dá)到這樣的目的。

下面來(lái)總結(jié)一下vue項(xiàng)目中或者說(shuō)工作中常用的設(shè)計(jì)模式。

單例模式

單例模式:確保一個(gè)類(lèi)只有一個(gè)實(shí)例對(duì)象,并提供一個(gè)全局訪問(wèn)點(diǎn)供其訪問(wèn)。

優(yōu)點(diǎn):適用于單一對(duì)象,只生成一個(gè)對(duì)象實(shí)例,避免頻繁創(chuàng)建和銷(xiāo)毀實(shí)例,減少內(nèi)存占用。

缺點(diǎn):不適用動(dòng)態(tài)擴(kuò)展對(duì)象。

場(chǎng)景:登錄浮窗、Vue中的axios實(shí)例(我們對(duì)axios進(jìn)行請(qǐng)求攔截和響應(yīng)攔截,多次調(diào)用封裝好的axios但是僅設(shè)置一次,封裝好的axios導(dǎo)出就是一個(gè)單例)、全局態(tài)管理 store、線程池、全局緩存

  function Person (name, age) {     this.name = name     this.age = age     this.info = function () {       console.log(`我的名字叫${this.name}, 我今年${this.age}了`)     }   }   Person.getInstance = function (name, age) {     if (!this.instance) {       this.instance = new Person(name, age)     }     console.log(this.instance)     return this.instance   }   let b1 = Person.getInstance('單例1', 18)   let b2 = Person.getInstance('單例2', 18)   b1.info()   b2.info()
登錄后復(fù)制

工廠模式

工廠模式:工廠模式是用來(lái)創(chuàng)建對(duì)象最常見(jiàn)的一種設(shè)計(jì)模式。不必暴露構(gòu)造函數(shù)的具體邏輯,而是將邏輯封裝在一個(gè)個(gè)函數(shù)之中,那么這個(gè)構(gòu)造函數(shù)就可以被看做工廠。

場(chǎng)景: 有構(gòu)造函數(shù)的地方,寫(xiě)了大量的構(gòu)造函數(shù)代碼,調(diào)用了大量的new操作符。

優(yōu)點(diǎn):通過(guò)工廠模式,我們可以快速創(chuàng)建大量相似對(duì)象,沒(méi)有重復(fù)代碼。

缺點(diǎn):工廠模式創(chuàng)建的對(duì)象屬于Object,無(wú)法區(qū)分對(duì)象類(lèi)型,這也是工廠模式?jīng)]有廣泛使用的原因。

 function Factory (name, age) {    this.name = name;    this.age = age;    // 或者    // let obj = {}    // obj.name = name    // obj.age = age    // return obj  }  Factory.prototype.say = function () {    console.log(`我的名字叫${this.name}, 我今年${this.age}了`)  }  let zs = new Factory('張三', 18);  let ls = new Factory('李四', 20);  zs.say()  ls.say()
登錄后復(fù)制

裝飾器模式

裝飾器模式(切面編程AOP): 在不改變對(duì)象自身的基礎(chǔ)上,在程序運(yùn)行期間給對(duì)象動(dòng)態(tài)的添加職責(zé);若直接修改函數(shù)體,則違背了’開(kāi)放封閉原則’,也違背了我們的’單一職責(zé)原則’;簡(jiǎn)單的說(shuō)就是允許向現(xiàn)有的函數(shù)添加新的功能,同時(shí)不改變其結(jié)構(gòu)。

場(chǎng)景: vue中的表單驗(yàn)證與表單提交就運(yùn)用了這種模式,遵循封閉開(kāi)放原則。

 function before (fn, callback) {     let _this = this;     return function () {       callback.apply(this, arguments)       return fn.bind(this, arguments)     }   }    function after (fn, callback) {     let _this = this      return function () {       let res = fn.apply(this, arguments)       callback.apply(this, arguments)       return res     }   }   // before和after是兩個(gè)高階函數(shù),讓我們一起回憶一下什么是高階函數(shù)?   // 還知道call,apply,bind的區(qū)別嗎   let getName = function getName () {     // 加入這是你同事寫(xiě)的爛代碼,看不下去的那種,那么別動(dòng)他的代碼     console.log('這是getName函數(shù)')   }    before(getName, function () {     // 這個(gè)就是你要寫(xiě)的新邏輯     console.log('切入前代碼')   })()    after(getName, function () {     // 這個(gè)也是你要寫(xiě)的新邏輯     console.log('切入后代碼')   })()
登錄后復(fù)制

策略模式

策略模式: 就是定義一系列的算法,把他們一個(gè)個(gè)封裝起來(lái),并且使他們可以相互替換。

 let strategy = {     'A': function (bonus) {       return bonus * 4     },     'B': function (bonus) {       return bonus * 3     }   }    function fn (level, bonus) {     return strategy[level](bonus)   }    let result = fn('A', 4000)   console.log(result, 'result')   // 策略模式提供了開(kāi)放-封閉原則,將算法或者方法封裝在一個(gè)類(lèi)中,使它們易于切換,易于替換。    function func (a, b) {     let f = function f() {       return a + b     }     return f   }
登錄后復(fù)制

在vue表單驗(yàn)證時(shí)也可以運(yùn)用

// 這里可以將所有的表單驗(yàn)證正則函數(shù)寫(xiě)在這里 export const loginUsername = (str) => {   return /^[a-zA-Z0-9_]{3,20}$/.test(str); };
登錄后復(fù)制

import * as validateForm from './validate'; export const gene = (key, msg) => {   return (r, v, c) => {     if (validateForm[key](v)) {       c();     } else {       c(new Error(msg));     }   }; };
登錄后復(fù)制

// 這樣看著是不是很清晰明了 import {gene} from '@/utils/formValidateGene'; rules: {      account: [{ required: true, validator: gene('loginUsername', '請(qǐng)輸入合適的賬號(hào)'), trigger: ['blur', 'change'] }]  }
登錄后復(fù)制

發(fā)布訂閱者模式

發(fā)布訂閱者模式又叫觀察者模式發(fā)布訂閱者模式一種一對(duì)多的依賴(lài)關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴(lài)于它的對(duì)象都得將得到通知;觀察者模式則是一種一對(duì)一的依賴(lài)關(guān)系。

  • 手寫(xiě)觀察者模式

class Observer {   client = {}   // 訂閱   listen (key, fn) {     if (!this.client[key]) {       this.client[key] = []     }        this.client[key].push(fn)   }   // 發(fā)布   publish (key) {     this.client[key].forEach(fn => {       fn.apply(this, arguments)     })   } }  let observer = new Observer() observer.listen('華為', (model, brand) => {   console.log(model, brand) }) observer.listen('蘋(píng)果', function (model, brand) {   console.log(model, brand) }) observer.publish('華為', 'P50') observer.publish('蘋(píng)果', '14')
登錄后復(fù)制

  • 手寫(xiě)響應(yīng)式

class EventEmitter {     constructor () {       this.client = {}     }     on (key, fn) {       if (!this.client[key]) {         this.client[key] = []       }       this.client[key].push(fn)     }     trigger (key, ...args) {       this.client[key].forEach(cb => cb(...args))     }   }   let event = new EventEmitter()   event.on('hello', function(res) {     console.log('hello', res)   })      let data = {     name: '測(cè)試'   }   Object.defineProperty(data, 'name', {     get (val) {       // console.log(val)     },     set (newVal) {       console.log(newVal)       event.trigger('hello', newVal)     }   })   data.name = '正在測(cè)試'
登錄后復(fù)制

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
日本久久久久久久久久加勒比| 女人越喊男人越往里寨电视剧| 久久久噜噜噜久久中文字幕色伊伊 | 开心久久婷婷综合中文字幕| 男女后进式猛烈XX00动态图| 欧美日韩在线视频一区| 日韩成视频在线精品| 特大荫唇XX另类| 小SAO货都湿掉奶头好硬男女| 亚洲国产精品久久久天堂不卡海量| 亚洲一卡2卡3卡4卡精品分类| 中文字幕有码中文无码| 啊灬啊灬啊灬快灬高潮了老| 国产DB624色谱柱88690| 国产一区二区在线视频| 久久久久夜夜夜综合国产| 男女啪啪免费观看的网址| 日韩AV人人夜夜澡人人爽| 五月丁香六月缴情基地| 亚洲色偷偷综合亚洲AV78| 18禁又污又黄又爽的网站| 成年免费A级毛片无码| 国产SUV精品一区二区33| 黑人vs日本人ⅩXXXHD| 妹妹中考前让我C了1次| 日韩精品无码中文字幕第一区| 我国产码在线观看AV哈哈哈网站| 亚洲国产精品一区二区成人片国内 | 私人家庭影院5577| 亚洲欧洲中文日韩久久AV乱码| 99精品国产99久久久久久97| 国产AV无码专区亚洲AV桃花庵| 狠狠色噜噜狠狠狠狠色综合网| 美丽人妻被按摩中出中文字幕 | 久久人人爽人人人人片AV| 强壮公的侵犯让我高潮不断| 无码专区人妻系列日韩| 一本一本久久A久久综合精品| 潮喷无码正在播放| 皇叔撞着小公主的小说叫什么| 免费播放片高清在线视频| 天天摸天天摸色综合舒服网| 亚洲日韩一页精品发布| www.XXXXx.com日本| 国产在线观看无码免费视频| 男生把感叹号放进女生的括号 | 国精产品一二二线网站| 免费人成网WW555| 无码成人AAAAA毛片| 中国成熟IPHONE| 国产成人AV乱码免费观看| 久久久久久九九精品久| 日韩人妻系列无码专区| 亚洲色偷偷偷综合网 | 国产精品午夜小视频观看| 秘书在办公室被躁到高潮| 婷婷久久综合九色综合97| 曰本无码人妻丰满熟妇啪| 国产成人精品免高潮在线观看| 老熟女HDXXXX国产喷水| 我和公发生了性关系公| 3D动漫同人精品无码专区| 国产色母和进口色母区别| 欧美精产国品一二三类产品 | 国产精品无码素人福利| 欧美JIZZ18性欧美| 亚洲AⅤ永久无码无人区电影| Chinese辽宁人妻4p| 激情伊人五月天久久综合| 日韩一区精品视频一区二区| 一二三四免费观看在线影视大全| 国产精华AV午夜在线观看| 妺妺坐在我腿上勃起弄了视频| 无码人妻一区二区三区免费AV | 亚洲精品无码你懂的| 大肉大捧一进一出好爽视频MBA| 久久精品人人做人人爽97| 四季亚洲AV无码一区在线观看 | 欧美国产一区二区三区激情无套 | 国产一区内射最近更新| 日本熟妇乱人伦XXXX| 泳池里强摁做开腿呻吟| 国产亚洲精久久久久久无码蜜桃| 日本入室强伦姧BD在线观看| 中文国产成人精品久久| 后进式疯狂摇乳无遮挡GIF| 舌头伸进去里面吃小豆豆| H精品无码动漫在线观看| 精品一区二区三区| 午夜无码国产理论在线| 成人免费一区二区三区视频软件| 美女无遮挡免费视频网站| 亚洲AV无码专区国产乱码APP| 二三四五六七无产乱码| 内射人妻深入内射| 夜夜夜夜猛噜噜噜噜噜试看| 孩交乱子XXXX高清影视| 舌头伸进去添的我好爽高视频| BGMBGMBGM老太太XX一| 精品国产一区二区三区久久| 无套内射AV二区| 粗大挺进朋友未婚妻| 女人浓毛巨茎ⅩXXOOO毛绒绒| 野花免费观看日本韩国| 激情亚洲一区国产精品| 性欧美VIDEO高清| 国产交换配乱婬视频偷| 色欲网久久久久久久久久久久久久 | 久久久久久久精品国产亚洲| 亚洲V国产V天堂A无码二区 | WWW一区二区WWW免费| 蜜臀AV无码国产精品色午夜麻豆| 亚洲综合成人AⅤ在线观看| 极品无码AV国模在线观看| 亚洲 日韩 欧美 成人 在线观| 夫上司人妻秘书OL中文有码| 人与各种动ZZZ0O0OXXX| TOUGHTESTED硬汉系列| 毛片一区二区三区| 一区二区三区熟女少妇小牛| 久久国产中文娱乐网| 亚洲AV永久无码精品主页| 国产乱子伦一区二区三区| 无码免费大香伊蕉在人线国产| 国产成人AV一区二区三区无码| 少妇无码一区二区三区| 风流老太婆大BBWBBWHD| 色老板在线永久免费视频| 成人性生交大片免费看中文| 日韩VA中文字幕无码电影| 把女人弄爽特黄A大片片| 欧美XXXX做受欧美88BBW| 97精品伊人久久大香线蕉app| 乱人伦中文视频在线| 中文字幕无码一线二线三线| 久久精品人人做人人爽| 中文字幕日韩人妻不卡一区| 国产精品香蕉成人网在线观看 | 欧美xxxxx视频| FREE俄罗斯免费视频| 欧洲无线一线二线三W955| www.内射孕妇网站入口| 欧美肉体裸交做爰XXXⅩ| 99精产国品一二三产区MBA| 欧美黑人又大又粗又长久久久| 99精产国品一二三产区区| 人妻无码AⅤ不卡中文字幕| 成人H视频在线观看| 少妇精品揄拍高潮少妇| 国产精华液一区二区区别大吗| 色婷婷久久久SWAG精品| 国产激情一区二区三区视频免樱桃| 天堂中文最新版在线中文| 国产精品无码久久综合| 亚洲成在人线在线播放无码| 久久精品人人看人人爽| …日韩人妻无码精品一专区 | Chinese宅妇内射AV| 人妻少妇伦在线无码| 国产成人果冻星空传媒| 亚洲AV无码专区国产乱码4SE| 久久精品国产精品亚洲色婷婷| 在线观看AV黄网站永久| 秋霞电影高清完整版| 高潮喷奶水在线播放视频| 新婚少妇下面真紧| 久久精品国产99久久久小说| .精品久久久麻豆国产精品| 日本丰满少妇毛茸茸| 国产精品国产三级国产AN| 亚洲精品二区国产综合野狼| 美女把尿口扒开让男人桶爽| ZOOM人牛OKZOOM| 天天摸天天摸色综合舒服网| 精品国产精品久久一区免费式| 中文无码字幕中文有码字幕| 日韩人妻一区二区三区免费 | 亚洲综合激情五月丁香六月| 男男射精控制PLAY小说| 父母全家儿女大联欢第14集| 亚洲国产精品成人久久蜜臀| 美人电影在线观看| 嗯~别停~用力点~再快点| 亚洲成人av免费观看| 女特警被三四个黑人糟蹋| 国产成人免费AV片在线观看| 亚洲人成无码网在线观看APP | 无人区码一码二码三码区别图片 | 国产精品免费久久久久软件| 亚洲热妇无码AV在线播放| 欧美老妇交乱视频在线观看| 国产精品露脸视频观看| 樱花YY私人在线影院| 色婷婷粉嫩AV精品综合在线| 精品亚洲国产成人小电影| 锕锕锕锕锕锕锕好疼JK漫画| 亚洲AV成人综合网| 男男H双腿涨灌PLAY慎入| 国产妓女牲交A毛片| 野花免费观看日本电影哔哩哔哩|