房仲媒合租屋雙方、留學中介協助申請流程——中介者的核心價值在於降低雙方直接依賴,提供統一協調介面。軟體設計中同樣面臨:物件之間錯綜複雜的網狀依賴,導致系統難以維護、擴展與重用。
GoF 定義:用一個中介物件封裝一系列物件的交互。中介者使各物件不需顯式相互引用,從而降低耦合,並能獨立改變它們之間的交互。
| 角色 | 職責 | 對應現實 |
|---|---|---|
| Mediator (抽象中介者) | 定義同事物件通訊的統一介面 | 中介公司的服務規範 |
| ConcreteMediator (具體中介者) | 協調各同事角色,知曉並持有所有同事引用 | 具體的房仲/留學顧問 |
| Colleague (同事角色) | 持有中介者引用,所有跨物件通訊必須透過中介者 | 房東/租客、學生/學校 |

| 模式 | 相似點 | 關鍵差異 |
|---|---|---|
| 觀察者模式 | 皆引入中間物件解耦 | 觀察者:單向通知、客戶端明確訂閱具體觀察者;中介者:雙向協調、對客戶端透明 |
| 命令模式 | 封裝請求為物件 | 命令:封裝單一操作,客戶端決定執行哪個命令;中介者:協調多物件複雜交互流程 |
| 外觀模式 | 簡化客戶端使用 | 外觀:面向子系統對外的統一入口,被客戶端感知;中介者:面向子系統內部協調,對客戶端隱藏 |
風險:具體中介者可能膨脹為「上帝類別」,集中過多業務邏輯。
對策:
MVC 三層中,Controller(控制層)扮演 View 與 Model 之間的中介者:
中介者模式是「適度解耦」的藝術。它不是萬能藥,而是針對物件群內部交互複雜化的精準手術刀。善用它能讓系統通訊協議從「多對多」簡化為「一對多」,顯著提升可讀性與可維護性;濫用它則會製造出難以維護的中心化巨石。設計時請記住:恰到好處,過猶不及。