五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

【D1n910】第 23 章 中介者模式 《JavaScript 設(shè)計(jì)模式》

2021-03-04 16:11 作者:愛交作業(yè)的D1N910  | 我要投稿

正常操作,正常分析,大家好,我是D1n910。


今天我繼續(xù)來學(xué)習(xí) 《JavaScript 設(shè)計(jì)模式》的第四篇 行為型設(shè)計(jì)模式


這是一個(gè)連續(xù)的讀書筆記,所以如果你之前的內(nèi)容沒有看的話,可以去看看(建議直接看書,當(dāng)然書的例子都比較早了,是2015年之前的代碼內(nèi)容,過了六年了,前端發(fā)展了很多,比如類的聲明可以直接用 Class 了)。


直接查看目錄就可以查看到所有的系列文章啦。




這里再次感謝 《Javascript 設(shè)計(jì)模式》及其作者 張榮銘,專欄內(nèi)容是在它的基礎(chǔ)上生成的。


現(xiàn)在會(huì)覺得很多設(shè)計(jì)模式離我們有點(diǎn)遙遠(yuǎn),是因?yàn)槲覀儸F(xiàn)在都在用大佬寫好的框架吧,很多設(shè)計(jì)模式都包含在框架里了。


后面有機(jī)會(huì)的話,我希望我可以查看目前主流框架的源代碼,然后進(jìn)行講解。


對應(yīng)的代碼,請查看

https://github.com/D1N910/JavaScript-design-patterns.git



第四篇 行為型設(shè)計(jì)模式

行為型設(shè)計(jì)模式用于不同對象之間職責(zé)劃分或算法抽象,行為型設(shè)計(jì)模式不僅僅涉及類和對象,還涉及類或?qū)ο笾g的交流模式并加以實(shí)現(xiàn)。


第 23?章 中介者模式(P152)


中介者模式(Mediator):通過中介者對象封裝一系列對象之間交互,使對象之間不再相互引用,降低他們之間的耦合。有時(shí)中介者對象也可以改變對象之間的交互。


從書上的內(nèi)容來看,一開始我是沒能理解中介者模式和觀察者模式的區(qū)別的。


后來經(jīng)過資料查詢,詢問公司大佬,明白了以下區(qū)分的點(diǎn):


(1)觀察者模式主要內(nèi)容是觀察者和被觀察者,主要是靠事件驅(qū)動(dòng),發(fā)布時(shí)一般會(huì)傳遞參數(shù);


(2)中介者模式主要是解決多個(gè)對象之間交互的問題,他會(huì)存儲(chǔ)各個(gè)對象的事務(wù),發(fā)布時(shí)一般不會(huì)傳遞參數(shù)。


中介者的寫法看起來和觀察者很像,但是其實(shí)內(nèi)部是有轉(zhuǎn)化內(nèi)容的,是可以自行處理參數(shù)的。


它的訂閱內(nèi)容一般不是動(dòng)態(tài)靈活的,所以一般不會(huì)提供解除訂閱的方式(這樣就是更復(fù)雜的觀察者模式了)。


它一般會(huì)集中設(shè)定好訂閱內(nèi)容。


比如我們有這個(gè)人場景,老板主動(dòng)通知大家去工作,它只需要讓中間人發(fā)出通知“工作”即可。


var Intermediary = (function () {

? ?var thing = {}


? ?return {

? ? ? ?resiger: function (type, action) {

? ? ? ? ? ?if (thing[type]) {

? ? ? ? ? ? ? ?thing[type] = action

? ? ? ? ? ?} else {

? ? ? ? ? ? ? ?thing[type] = [action]

? ? ? ? ? ?}

? ? ? ?},


? ? ? ?send: function (type) {

? ? ? ? ? ?if (!thing[type]) {

? ? ? ? ? ? ? ?return

? ? ? ? ? ?}

? ? ? ? ? ?for (var fn of thing[type]) {

? ? ? ? ? ? ? ?fn()

? ? ? ? ? ?}

? ? ? ?}

? ?}

})()


var staff = (function () {

? ?return {

? ? ? ?work() {

? ? ? ? ? ?console.log('員工工作了')

? ? ? ?}

? ?}

})()


var manager = (function () {

? ?return {

? ? ? ?work() {

? ? ? ? ? ?console.log('經(jīng)理工作了')

? ? ? ?}

? ?}

})()


//?集中處理工作

{

? ?Intermediary.resiger('work', function () {

? ? ? ?staff.work()

? ? ? ?manager.work()

? ?})

}


Intermediary.send('work')


這樣完成了咱們的中介者模式。




其實(shí)感覺這個(gè)內(nèi)容,還是和觀察者模式很像。

本章 End

d1n910 于 2021年03月03日 寫于南山后海






【D1n910】第 23 章 中介者模式 《JavaScript 設(shè)計(jì)模式》的評論 (共 條)

分享到微博請遵守國家法律
格尔木市| 泾川县| 石狮市| 绍兴县| 合肥市| 全椒县| 哈尔滨市| 井陉县| 崇文区| 长武县| 金乡县| 正安县| 高州市| 铁岭市| 黄陵县| 禹城市| 鄂伦春自治旗| 嵊泗县| 汾西县| 芦山县| 泗洪县| 增城市| 修文县| 清镇市| 额济纳旗| 秦皇岛市| 长白| 阳新县| 西贡区| 泰来县| 泽库县| 佛山市| 行唐县| 建水县| 贡山| 饶阳县| 阜新市| 自治县| 湾仔区| 吴旗县| 昌吉市|