Mediator Pattern
中介模式又稱為調停模式,用來協調物件間的交流。
設計此模式主要有三角色需要區分
- 交流物件(InteractiveObject):要進行交流的一系列物件。
- 仲介者(Mediator):負責協調各個物件之間的交流。
- 具體仲介者(Mediator):仲介的具體實現。
優點
- 將原本分佈於多個物件間的行為集中在一起,作為一個獨立的概念並將其封裝在一個物件中,簡化了物件之間的交流。
- 將多個呼叫者與多個實現者之間多對多的交流關係,轉換為一對多的交流關係,一對多的交流關係更易於理解、維護和擴展,大大減少了多個物件之間相互交叉引用的情況。
從 網狀結構 變成 星型結構。
缺點
- 仲介者承接了所有的交流邏輯,交流的複雜度轉變成了仲介者的複雜度,仲介者類別會變得越來越龐大和複雜,以至於難以維護。
- 仲介者出問題會導致多個使用者同時出問題。
使用情境
- 一組物件以定義良好但複雜的方式進行通信。產生的相互依賴關聯式結構混亂且難以理解。
- 一個物件引用其他很多物件並且直接與這些物件通信,導致難以複用該物件。
- 想透過一個中間類別來封裝多個類別中的行為,同時又不想生成太多子類別。
note
來源: Python 設計模式 - 羅偉富