中介者模式

2022-01-11 01:18:24 字數 1081 閱讀 4451

1、預習

書中是以聯合國的例子來說明中介者模式的理解,即世界上各個國家之間發生事務時的交流解決方式,大致來說每個國家都不必要與每個具體的國家接觸,而是可以通過聯合國來與其他國家交流,這即是中介模式。如果以我們使用最多的例子來說的話(c#+vs2013),想想我們經常建立的windows窗體應用程式,其實form.cs這個類就是中介者模式最好的體現,即我們不需要知道介面上的每個控制項,而是通過再form.cs中就可以操作各個控制項。

從原則上來說,「迪公尺特法則」中之處如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫。

2、定義

用乙個中介物件來封裝一些列的物件互動。中介者使各物件之間不需要顯示的相互引用,從而達到鬆散耦合的目的,而且可以獨立的改變他們之間的互動。

3、**設計

①首先需要定義好中介者類,有乙個方法來完成不同物件之間的通訊。

②定義物件類,每乙個物件如果想向另外乙個物件傳送訊息,就必須要通過中介者,因此有乙個方法(引數:訊息內容,引數:中介者)向中介者傳送訊息。同時還需要乙個方法可以獲取由中介者傳送回來的訊息。也即:每個物件的工作就是把訊息傳送給中介者,然後等待從中介者返回的訊息。

③在具體的中介者中,需要知道每乙個物件,然後在其內部設定具體的通訊雙方;也就是由中介者內部完成兩個物件通訊橋梁的建立工作。

4、理解

中介者模式減少了各個具體物件之間的互動,使得各個物件可以獨立的進行更改;而由中介者來完成各個物件之間的互動,即把物件之間的通訊進行了抽象,將中介作為乙個獨立的概念並將其封裝在乙個物件中,這時中介者所關注的物件就集中的各個具體物件之間的互動上來,也就是中介者可以站在乙個更加巨集觀的角度去看待各個物件的整體。

但是,中介者模式控制了集中化,就把原來兩個物件之間的互動複雜性變成了中介者的複雜性,這樣也使得中介者比任何乙個具體物件都複雜,當物件數量不斷增加時,中介者類也越來越複雜,從而也很難維護。

也就是說,中介者模式的優點是「集中控制」,但這同時也是他的缺點。因此,中介者模式也很容易誤用。我們在系統中碰到多對多互動複雜的物件群時,不要急於使用中介者模式;一定要先考慮系統出現這樣的情況是設計上的原因,還是業務本身的需求,然後再考慮使用具體的模式。

中介者模式

1.中間 類 namespace intermediarypattern 成員物件需要知道是哪個中介者在通知它事情 public abstract class member 各成員間要傳送訊息 public abstract void send string msg 這個方法其實是具體實施發訊息的 ...

中介者模式

中介者模式就是在物件之間的關係很複雜時用,名如其人,就像租房的黑中介一樣,如果每個房東都拿著很多租房者的資訊很麻煩,每個租房者都要拿著很多房東的資訊也麻煩,所以需要乙個中介來拿著這些資訊,租房者只需要發出租房的請求,中介會給你介紹合適的房東,房東只需要提交房屋資料就等著中介的人帶著訪客看房拿錢就行了...

中介者模式

中介者模式 mediator pattern 1 抽象中介者 mediator 角色 抽象中介者角色定義統一的介面用於各同事角色之間的通訊。具體中介者 concrete mediator 角色 具體中介者角色通過協調各同事角色實現協作行為,因此它必須依賴於各個同事角色。同事 colleague 角色...