中介者模式
?中介者(Mediator)模式屬于行為型模式的一種。
中介者模式的目的是把多方會談變成雙方會談,從而實現多方的松耦合。用一個中介對象來封裝一系列的對象交互。這樣,系統中的各個對象不直接互相引用,而是通過中介者進行交互,從而降低了系統的耦合度。
MVC模式以及MVVM模式都可以看作是中介者模式的擴展。中介者模式能減少對象之間混亂無序的依賴關系。類所擁有的依賴關系越少,就越易于修改、 擴展或復用。
在真實世界中,飛機駕駛員不會直接相互溝通來決定哪一架飛機先降落,而是通過塔臺來進行溝通,此時的塔臺就是一個中介者對象。
當多個類之間存在復雜的交互,而這些交互又不希望在各個類之間直接進行時;當系統中的對象之間需要有統一的協調,但不想讓這些對象直接依賴彼此時,都可以使用中介者模式。
中介者模式通常有以下組成部分:
- Mediator(中介者接口):定義了一個接口,用于與多個同事對象進行交互。
- ConcreteMediator(具體中介者):實現中介者接口,協調和管理多個同事對象的交互。
- Colleague(同事類):所有同事類都知道中介者對象,它們通過中介者與其他同事類進行交互。
- ConcreteColleague(具體同事類):每個具體同事類都向中介者發出請求并接收來自中介者的通知。
我們模擬一個簡單的聊天室應用。聊天室相當于一個中介者。
1、Mediator: 中介者接口
2、ConcreteMediator: 具體中介者
3、Colleague: 同事類
4、ConcreteColleague: 具體同事類
5、客戶端
中介者模式的優缺點。
優點:
- 降低耦合度:通過將對象的交互邏輯集中到中介者中,減少了對象之間的直接依賴。
- 易于擴展:如果需要添加新的同事類,只需讓其繼承User類并實現相關功能,而不需要修改其他對象的代碼。
- 集中控制:所有交互邏輯都集中在中介者類中,便于管理和控制復雜的交互流程。
缺點:
- 中介者過于復雜:當系統中的對象過多時,中介者可能會變得非常復雜,甚至成為“上帝對象”。
- 不適用所有場景:對于簡單的系統,使用中介者模式可能會過度設計,反而增加了不必要的復雜性。
堅持往前走,不回頭、不放棄,冰封萬里也能走到春暖花開。-- 煙沙九洲
浙公網安備 33010602011771號