中介者模式/Mediator

中介者模式/Mediator

意圖/適用場景:

中介模式的用意是用一箇中介對象來封裝一系列的對象交互。中介者使各對象不需要顯式地相互引用,從而使其耦合鬆散,而且可以獨立地改變它們之間的交互。
面向對象設計鼓勵將行爲分佈到各個對象中。這種分佈可能會導致對象間有許多連接。在最壞的情況下,每一個對象都知道其他所有對象。雖然將一個系統分割成許多對象通常可以增強可複用性, 但是對象間相互連接的激增又會降低其可複用性。大量的相互連接使得一個對象似乎不太可能在沒有其他對象的支持下工作—系統表現爲一個不可分割的整體。而且,對系統的行爲進行任何較大的改動都十分困難,因爲行爲被分佈在許多對象中。結果是, 你可能不得不定義很多子類以定製系統的行爲。
使用中介模式的目的,就是把這種網形的對象間關係轉變爲星形。使各對象可以相對獨立地變化。

中介者模式/Mediator

UML:

中介者模式/Mediator

參與者:

  1. 抽象中介者(Mediator):中介對象的公共接口。定義出一個方法onChange(),用於把一個同事對象發生變化的信息擴散給其它相關的對象。
  2. 具體中介者(ConcreteMediator):實現抽象中介者接口。
  3. 抽象同事(Colleague):處於平級關係的、互相間有複雜關聯的對象的公共接口。定義出一個方法action(),用於響應相關聯的對象的變化。
  4. 具體同事(ConcreteColleague):實現抽象同事接口。

要點:

  1. 中介者模式的優點:
    • 將多對多的相互作用轉化爲一對多的相互作用,避免了同事對象之間的過度耦合,使得各同事類可以相對獨立地演化。
  2. 中介者模式的缺點:
    • 中介者模式降低了同事對象間的複雜性,但代價是增加了中介者類的複雜性。一個彌補的辦法是建立多箇中介類,動態地選擇其中的一個起作用。

示例代碼:

沒有爲本模式準備示例代碼,因爲星形的對象間關係實現的方式很多。而且本模式的用意不難理解。

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