模式定義:
中介者模式(Mediator Pattern)是用來降低多個對象和類之間的通信復雜性。這種模式提供了一個中介類偷办,該類通常處理不同類之間的通信卢未,并支持松耦合陶因,使代碼易于維護。中介者模式屬于行為型模式巷嚣。
用一個中介對象來封裝一系列的對象交互喘先,中介者使各對象不需要顯式地相互引用,從而使其耦合松散廷粒,而且可以獨立地改變它們之間的交互窘拯。
對象與對象之間存在大量的關聯(lián)關系,這樣勢必會導致系統(tǒng)的結構變得很復雜坝茎,同時若一個對象發(fā)生改變涤姊,我們也需要跟蹤與之相關聯(lián)的對象,同時做出相應的處理嗤放。
多個類相互耦合思喊,形成了網(wǎng)狀結構。
將上述網(wǎng)狀結構分離為星型結構次酌。
對象 Colleague 之間的通信封裝到一個類中單獨處理恨课。
實現(xiàn)
我們通過聊天室實例來演示中介者模式。實例中岳服,多個用戶可以向聊天室發(fā)送消息剂公,聊天室向所有的用戶顯示消息。我們將創(chuàng)建兩個類 ChatRoom 和 User吊宋。User 對象使用 ChatRoom 方法來分享他們的消息纲辽。
MediatorPatternDemo,我們的演示類使用 User 對象來顯示他們之間的通信。
源碼:代碼倉庫
總結:
1文兑、降低了類的復雜度盒刚,將一對多轉化成了一對一。
2绿贞、各個類之間的解耦因块。
3、符合迪米特原則籍铁。
中介者會龐大涡上,變得復雜難以維護。
1拒名、系統(tǒng)中對象之間存在比較復雜的引用關系吩愧,導致它們之間的依賴關系結構混亂而且難以復用該對象。
2增显、想通過一個中間類來封裝多個類中的行為雁佳,而又不想生成太多的子類。
不應當在職責混亂的時候使用同云。
參考:菜鳥教程