摘要:中介者模式中介者模式對(duì)象和對(duì)象之間借助第三方中介者進(jìn)行通信。將就用下這個(gè)這個(gè)函數(shù)充當(dāng)中介者挑戰(zhàn)成功挑戰(zhàn)失敗選手選手選手選手挑戰(zhàn)成功選手挑戰(zhàn)成功選手挑戰(zhàn)失敗在這段代碼中之間沒(méi)有直接發(fā)生關(guān)系而是通過(guò)另外的對(duì)象建立鏈接姑且將之當(dāng)成是中介者模式了。
中介者模式
中介者模式: 對(duì)象和對(duì)象之間借助第三方中介者進(jìn)行通信。
場(chǎng)景 demo
一場(chǎng)測(cè)試結(jié)束后, 公布結(jié)果: 告知解答出題目的人挑戰(zhàn)成功, 否則挑戰(zhàn)失敗。
const player = function(name) { this.name = name playerMiddle.add(name) } player.prototype.win = function() { playerMiddle.win(this.name) } player.prototype.lose = function(){ playerMiddle.lose(this.name) } const playerMiddle =(function(){ //將就用下這個(gè)demo, 這個(gè)函數(shù)充當(dāng)中介者 const players =[] const winArr = [] const loseArr = [] return { add: function(name) { players.push(name) }, win: function(name){ winArr.push(name) if(winArr.length + loseArr.length === players.length){ this.show() } }, lose: function(name){ loseArr.push(name) if(winArr.length + loseArr.length === players.length){ this.show() } }, show: function(){ for(let winner of winArr){ console.log(winner+"挑戰(zhàn)成功;") } for(let loser of loseArr){ console.log(loser+"挑戰(zhàn)失敗;") } } } }()) const a = new player("A選手") const b = new player("B選手") const c = new player("C選手") a.win() b.lose() c.win() // A 選手挑戰(zhàn)成功; // B 選手挑戰(zhàn)成功; // C 選手挑戰(zhàn)失敗;
在這段代碼中 A、B、C 之間沒(méi)有直接發(fā)生關(guān)系, 而是通過(guò)另外的 playerMiddle 對(duì)象建立鏈接, 姑且將之當(dāng)成是中介者模式了。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/106757.html
摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。看此文章前,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...
摘要:設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐讀書(shū)筆記。看此文章前,建議先看設(shè)計(jì)模式之發(fā)布訂閱模式觀察者模式在中,已經(jīng)介紹了什么是發(fā)布訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布訂閱模式。 《JavaScript設(shè)計(jì)模式與開(kāi)發(fā)實(shí)踐》讀書(shū)筆記。 看此文章前,建議先看JavaScript設(shè)計(jì)模式之發(fā)布-訂閱模式(觀察者模式)-Part1 在Part1中,已經(jīng)介紹了什么是發(fā)布-訂閱模式,同時(shí),也實(shí)現(xiàn)了發(fā)布-訂閱模式。但是,就Part1...
摘要:發(fā)布訂閱模式又叫觀察者模式,它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。事件觀察者模式應(yīng)該是最常用的模式之一。總之,當(dāng)消息一發(fā)布,所有的訂閱者都會(huì)收到消息。發(fā)布訂閱模式還可以用來(lái)幫助實(shí)現(xiàn)一些別的設(shè)計(jì)模式,比如中介者模式。 發(fā)布/訂閱模式又叫觀察者模式,它定義對(duì)象間的一種一對(duì)多的依賴關(guān)系。當(dāng)一個(gè)對(duì)象的狀態(tài)(發(fā)布者)發(fā)生改變時(shí),所有依賴于它的對(duì)象都將得到通知。在 JavaScript 開(kāi)發(fā)中,我們...
摘要:代理模式,迭代器模式,單例模式,裝飾者模式最少知識(shí)原則一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少地與其他實(shí)體發(fā)生相互作用。迭代器模式可以將迭代的過(guò)程從業(yè)務(wù)邏輯中分離出來(lái),在使用迭代器模式之后,即不用關(guān)心對(duì)象內(nèi)部構(gòu)造也可以按順序訪問(wèn)其中的每個(gè)元素。 接手項(xiàng)目越來(lái)越復(fù)雜的時(shí)候,有時(shí)寫(xiě)完一段代碼,總感覺(jué)代碼還有優(yōu)化的空間,卻不知道從何處去下手。設(shè)計(jì)模式主要目的是提升代碼可擴(kuò)展性以及可閱讀性。 本文主要以例子的...
閱讀 4078·2021-10-08 10:04
閱讀 3061·2021-08-11 11:20
閱讀 2731·2021-07-25 21:37
閱讀 2681·2019-08-30 12:44
閱讀 2306·2019-08-30 11:12
閱讀 1314·2019-08-26 13:45
閱讀 2338·2019-08-26 11:53
閱讀 3057·2019-08-26 11:32