1.概述
該模式在Head First中沒有介紹,它用于通過一個中介者完成對象間通信的解耦。當代碼中出現大量有着其他對象資訊的對象時就可以使用這個模式。
在這個模式中,有如下的參與者:
中介者(Mediator):抽象定義了“同僚”(colleagues,稍後有定義)們通信的接口。
具體中介者(Concrete Mediator):實作了“同僚”間的通信接口。
同僚(Colleague):參與通信的實體抽象。
具體同僚(Concrete Colleague):實作的參與通信的實體。
簡單的說,通過同僚持有中介者(其中完成了同僚間通信的接口)的引用而實作了同僚間的通信。
其中,中介者和同僚的抽象并不是必須的,隻是為了面向接口程式設計的抽象需要。
2.執行個體
我們用一個原型系統簡單示範一下這個模式
首先我們定義一個抽象中介者,其中有通信接口Send:
然後我們對其進行實作:
中介者裡有通信的雙方同僚,在同僚裡有一個Notify方法,表示提示收到一個消息。
然後我們定義一個抽象同僚類:
同僚類中要持有中介者的引用。
進而我們定義兩個具體的同僚:
現在我們開始使用這個中介者完成兩個同僚間的通信:
3.UML總結