中介者模式,又稱栛調者模式,直接照字面上解釋,就是有一個中介者負責處理事情。因為有一個 中介者可以負責事情,如處理、傳遞、通知,就可以簡化物件之間的溝通和控制制方式,進而降低物件之間的耦合性 (相依性,依賴性)。 中介者模式定義一個可以封裝一組物件互動的物件,可以使物件不用直接互相引用而降低耦合性,且可以獨立改變物件之間的互動關係。 Define an object that encapsulates how a set of objects interact. Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently. 類別圖中的 Colleague 相關類別,指的就是實際上要做事,彼此可能因為不同的需求而會有相依性的類別。ConcreteColleague 之間不會直接溝通,而是透過 Mediator。看到這邊,可以順便跟 表象模式 來做個比較。這兩個模式都同樣有管理一群類別的味道,但不同之處是在於 Client 的角度。表象模式中,Client 是不會直接跟物件們溝通,都是透過表象來做事。而中介者模式中,Client 還是可以直接跟物件們溝通,只不過 中介者模式是強調的是物件們不會直接溝通 。另外表象模式跟中介者模式都是很好的 認識極少化守則(又稱 迪米特法則 )實踐 ,表象模式是把這個守則應用在 Client 跟要溝通的物件們,而中介者模式是把這個守則應用在物件們之間的溝通。 接下來看個簡單的範例吧。假設你現在要設計一個 GUI 的登入畫面,有四個元件:可以讓使用者輸入帳號密碼的 EditText,顯示帳號或是密碼有問題的 TextView,以及可以讓使用者確定要登入的 Button。一般來說,當帳號密碼有問題,登入 Button 就不能按,且 TextView 可能需要顯示提示訊息。當沒有使用中介者模式時,這些元件可能彼此都要...
深入淺出設計模式 (Head First Design Patterns) 的筆記