1. 程式人生 > >設計模式---接口隔離模式之中介者模式(Mediator)

設計模式---接口隔離模式之中介者模式(Mediator)

單向 com clas 分享 分享圖片 獨立 mage 分解 pan

一:概念

在Mediator模式中,類之間的交互行為被統一放在Mediator的對象中,對象通過Mediator對象同其他對象交互。Mediator對象起到控制器的作用

二:動機

在軟件構建的過程中,經常出現多個對象互相關聯交互的情況,對象之間常常會維持一種復雜的引用關系,如果遇到了一些需求的更改,這種直接的引用關系將面臨不斷的變化。在這種情況下,我們可以使用“中介對象”來管理對象間的關聯關系,避免相互交互的對象之間的緊耦合引用關系,從而更好地抵禦變化。
在這種情況下,我們可使用一個“中介對象”來管理對象間的關聯關系,避免相互交互的對象之間額緊耦合引用關系,從而更好地抵禦變化。

三:模式定義

用一個中介對象來封裝(封裝變化)一系列的對象交互。中介者使各個對象不需要顯示的相互引用(編譯時依賴 -> 運行時依賴),從而使其耦合松散(管理變化),而且可以獨立的改變他們之間的交互。 

                                                                                      --《設計模式》Gof 

四:結構

技術分享圖片

五:與Facade模式比較

Facade是系統外與系統內之間的隔離,而中介者Mediator解決的是系統內中各個對象之間的隔離。
多個對象,呈現復雜的引用關系時使用Mediator模式

六:類圖

技術分享圖片

七:要點總結

(一)將多個對象間復雜的關聯關系解耦,Mediator模式將多個對象間的控制邏輯進行集中管理(定義一套調用機制的協議),變“多個對象互相關聯”為“多個對象和一個中介者關聯”,簡化了系統的維護,抵禦了可能的變化。

(二)隨著控制邏輯的復雜化,Mediator具體對象的實現可能相當復雜。這時候可以對Mediator對象進行分解處理。

(三)Facade模式是解耦系統間(單向)的對象關聯關系;Mediator模式是解耦系統內各個對象之間(雙向)的關聯關系。

設計模式---接口隔離模式之中介者模式(Mediator)