`

設計模式之Mediator(仲介者)

阅读更多

Mediator 定義 :
用一個仲介物件來封裝一系列關於物件交互行爲。

爲何使用 Mediator?
各個物件之間的交互操作非常多 ; 每個物件的行爲操作都依賴彼此對方 , 修改一個物件的行爲 , 同時會涉及到修改很多其他物件的行爲 , 如果使用 Mediator 模式 , 可以使各個物件間的耦合鬆散 , 只需關心和 Mediator 的關係 , 使多對多的關係變成了一對多的關係 , 可以降低系統的複雜性 , 提高可修改擴展性。

如何使用 ?

首先 有一個介面 , 用來定義成員物件之間的交互聯繫方式 :

public interface Mediator { }

Meiator 具體實現 , 真正實現交互操作的內容 :

public class ConcreteMediator implements Mediator {

   // 假設當前有兩個成員 .
  
private ConcreteColleague1 colleague1 = new ConcreteColleague1();
   private ConcreteColleague2 colleague2 = new ConcreteColleague2();

   ...

}

再看看另外一個參與者 : 成員 , 因爲是交互行爲 , 都需要雙方提供一些共同介面 , 這種要求在 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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics