21 Mediator中介者模式(行爲型)

21 Mediator(行爲型)

    • 中介者/調停者對象封裝了一系列對象相互作用的方式,使得這些對象不必互相明顯引用。從而使它們可以較鬆散地耦合。當這些對象中的某些對象之間的相互作用發生改變時,不會立即影響到其他的一些對象之間的相互作用。從而保證這些相互作用可以彼此獨立地變化。)
    • 動機:
      • 面向對象設計鼓勵在對象之間分佈行爲。這種分佈可以產生對象結構,對象之間有許多連接;在最壞的情況下,每個對象最終都知道彼此。
    • 什麼時候用:
      • 一組對象以定義良好但複雜的方式通信。由此產生的相互依賴關係是非結構化的,難以理解。
      • 重用一個對象是困難的,因爲它涉及並與許多其他對象通信。
      • 分佈在多個類之間的行爲應該是可自定義的,而不需要很多子類化。
    • 結構:

 

    • 參與者:
      • 中介:定義用於與同事對象通信的接口。
      • 具體的中介者:通過協調同事對象來實現協作行爲。瞭解並維護其同事。
      • Colleague classes:
        • 每個同事類都知道它的中介對象。
        • 每一個同事與它的調解人溝通時,它將會與另一個同事溝通。(

colleague間的通信一定要通過mediator)

    • 協作:
      • Colleagues send and receive requests from a Mediator object.
      • 中介通過在適當的同事之間路由請求來實現協作行爲。
    • 好處:
      • 解耦
      • 簡化對象協議
      • 對象之間的合作抽象出來
      • 集中控制
        • 中介模式以交互的複雜性換成了中介者的複雜性。
        • 由於中介封裝了協議,因此它可能比任何單個同事都要複雜。這可以使中介本身一個龐然大物(巨無霸),很難維護。

 

    • 缺點:
      • 所有複雜性在中介者中
    • 避免誤用中介者
      • 中介模式適用於避免混亂和醜陋的系統。
      • 中介模式不應該應用於一個混亂和醜陋的系統。

 

    • 原則:最小知識原則

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章