Mediator 定義 :
用一個仲介物件來封裝一系列關於物件交互行爲。
爲何使用 Mediator?
各個物件之間的交互操作非常多 ; 每個物件的行爲操作都依賴彼此對方 , 修改一個物件的行爲 , 同時會涉及到修改很多其他物件的行爲 , 如果使用 Mediator 模式 , 可以使各個物件間的耦合鬆散 , 只需關心和 Mediator 的關係 , 使多對多的關係變成了一對多的關係 , 可以降低系統的複雜性 , 提高可修改擴展性。
如何使用 ?
首先 有一個介面 , 用來定義成員物件之間的交互聯繫方式 :
public interface Mediator { } |
Meiator 具體實現 , 真正實現交互操作的內容 :
public class ConcreteMediator implements Mediator { // 假設當前有兩個成員 . ... } |
再看看另外一個參與者 : 成員 , 因爲是交互行爲 , 都需要雙方提供一些共同介面 , 這種要求在 Visitor Observer 等模式中都是相同的。
public class Colleague { private Mediator mediator; public Mediator getMediator() { return mediator; } public void setMediator( Mediator mediator ) { this.mediator = mediator; } } public class ConcreteColleague1 { } public class ConcreteColleague2 { } |
每個成員都必須知道 Mediator, 並且和 Mediator 聯繫 , 而不是和其他成員聯繫。
至此 ,Mediator 模式框架完成 , 可以發現 Mediator 模式規定不是很多 , 大體框架也比較簡單 , 但實際使用起來就非常靈活。
Mediator 模式在事件驅動類別應用中比較多 , 例如介面設計 GUI.; 聊天 , 消息傳遞等 , 在聊天應用中 , 需要有一個 MessageMediator, 專門負責 request/reponse 之間任務的調節。
MVC 是 J2EE 的一個基本模式 ,View Controller 是一種 Mediator, 它是 Jsp 和伺服器上應用程式間的 Mediator 。