中介者模式: 對象和對象之間藉助第三方中介者進行通訊。函數
場景 demo
一場測試結束後, 公佈結果: 告知解答出題目的人挑戰成功, 不然挑戰失敗。測試
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(){ //將就用下這個demo, 這個函數充當中介者 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+'挑戰成功;') } for(let loser of loseArr){ console.log(loser+'挑戰失敗;') } } } }()) const a = new player('A選手') const b = new player('B選手') const c = new player('C選手') a.win() b.lose() c.win() // A 選手挑戰成功; // B 選手挑戰成功; // C 選手挑戰失敗;
在這段代碼中 A、B、C 之間沒有直接發生關係, 而是經過另外的 playerMiddle 對象創建連接, 姑且將之當成是中介者模式了。this