Skip to main content

Mediator Pattern

中介模式又稱為調停模式,用來協調物件間的交流。

設計此模式主要有三角色需要區分

  1. 交流物件(InteractiveObject):要進行交流的一系列物件。
  2. 仲介者(Mediator):負責協調各個物件之間的交流。
  3. 具體仲介者(Mediator):仲介的具體實現。

優點

  1. 將原本分佈於多個物件間的行為集中在一起,作為一個獨立的概念並將其封裝在一個物件中,簡化了物件之間的交流。
  2. 將多個呼叫者與多個實現者之間多對多的交流關係,轉換為一對多的交流關係,一對多的交流關係更易於理解、維護和擴展,大大減少了多個物件之間相互交叉引用的情況。

從 網狀結構 變成 星型結構。

缺點

  1. 仲介者承接了所有的交流邏輯,交流的複雜度轉變成了仲介者的複雜度,仲介者類別會變得越來越龐大和複雜,以至於難以維護。
  2. 仲介者出問題會導致多個使用者同時出問題。

使用情境

  1. 一組物件以定義良好但複雜的方式進行通信。產生的相互依賴關聯式結構混亂且難以理解。
  2. 一個物件引用其他很多物件並且直接與這些物件通信,導致難以複用該物件。
  3. 想透過一個中間類別來封裝多個類別中的行為,同時又不想生成太多子類別。
note

來源: Python 設計模式 - 羅偉富