中介者模式:物件和物件之間借助第三方中介者進行通訊。
定義:用乙個中介物件來封裝一系列的物件互動,中介者使各物件不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的互動。
主要解決:物件與物件之間存在大量的關聯關係,這樣勢必會導致系統的結構變得很複雜,同時若乙個物件發生改變,我們也需要跟蹤與之相關聯的物件,同時做出相應的處理。
何時使用:多個類相互耦合,形成了網狀結構。
如何解決:將上述網狀結構分離為星型結構。
應用例項:1、中國加入 wto 之前是各個國家相互**,結構複雜,現在是各個國家通過 wto 來互相**。 2、機場排程系統。 3、mvc 框架,其中c(控制器)就是 m(模型)和 v(檢視)的中介者。
優點:1、降低了類的複雜度,將一對多轉化成了一對一。 2、各個類之間的解耦。 3、符合迪公尺特原則。
缺點:中介者會龐大,變得複雜難以維護。
使用場景:1、系統中物件之間存在比較複雜的引用關係,導致它們之間的依賴關係結構混亂而且難以復用該物件。 2、想通過乙個中間類來封裝多個類中的行為,而又不想生成太多的子類。
注意事項:不應當在職責混亂的時候使用。
一場測試結束後,公布結果:告知解答出題目的人挑戰成功,否則挑戰失敗。
const player = function在這段**中 a、b、c 之間沒有直接發生關係,而是通過另外的 playermiddle 物件建立鏈結,姑且將之當成是中介者模式了。(name)
player.prototype.win = function
() player.prototype.lose = function
() const playermiddle = (function() ,
win:
function
(name)
},lose:
function
(name)
},show:
function
()
for(let loser of losearr)
},}}())
const a = new player('a 選手')
const b = new player('b 選手')
const c = new player('c 選手')
a.win()
b.win()
c.lose()
//a 選手挑戰成功;
//b 選手挑戰成功;
//c 選手挑戰失敗;
設計模式 21 中介者模式
中介者模式 用乙個中介物件來封裝一系列的物件互動 中介者 就像我們在租房子一樣,有租房子的中介 抽象中介者 mediator package com.actionpattern.intermediary.edition1 抽象中介者 mediator public abstract class me...
設計模式17 中介者模式
中介者模式 mediator pattern 是用來降低多個物件和類之間的通訊複雜性。這種模式提供了乙個中介類,該類通常處理不同類之間的通訊,並支援松耦合,使 易於維護。中介者模式屬於行為型模式。不應當在職責混亂的時候使用。建立中介類 聊天室,負責傳送通訊 include include inclu...
設計模式整理 12 中介者模式
學習 android 原始碼設計模式解析與實踐 系列筆記 生活中經常能聽到或接觸到各種 中介者 比如買房子或者租房,可能會通過房屋中介 買二手車會有二手車中介 找工作也可以通過中介。中介者模式屬於行為型模式。中介者模式包裝了一系列物件相互作用的方式,使得這些物件不必相互明顯作用。從而使它們可以鬆散耦...