java 中介者模式__java

來源:互聯網
上載者:User

原文出處:http://blog.csdn.net/zhengzhb/article/details/7430098


定義:用一個中介者對象封裝一系列的對象互動,中介者使各對象不需要顯示地相互作用,從而使耦合鬆散,而且可以獨立地改變它們之間的互動。

類型:行為類模式

類圖:

中介者模式的結構

       中介者模式又稱為調停者模式,從類圖中看,共分為3部分:  抽象中介者:定義好同事類對象到中介者對象的介面,用於各個同事類之間的通訊。一般包括一個或幾個抽象的事件方法,並由子類去實現。 中介者實作類別:從抽象中介者繼承而來,實現抽象中介者中定義的事件方法。從一個同事類接收訊息,然後通過訊息影響其他同時類。 同事類:如果一個對象會影響其他的對象,同時也會被其他對象影響,那麼這兩個對象稱為同事類。在類圖中,同事類只有一個,這其實是現實的省略,在實際應用中,同事類一般由多個組成,他們之間相互影響,相互依賴。同事類越多,關係越複雜。並且,同事類也可以表現為繼承了同一個抽象類別的一組實現組成。在中介者模式中,同事類之間必須通過中介者才能進行訊息傳遞。

為什麼要使用中介者模式

       一般來說,同事類之間的關係是比較複雜的,多個同事類之間互相關聯時,他們之間的關係會呈現為複雜的網狀結構,這是一種過度耦合的架構,即不利於類的複用,也不穩定。例如在下圖中,有六個同事類對象,假如對象1發生變化,那麼將會有4個對象受到影響。如果對象2發生變化,那麼將會有5個對象受到影響。也就是說,同事類之間直接關聯的設計是不好的。

        如果引入中介者模式,那麼同事類之間的關係將變為星型結構,從圖中可以看到,任何一個類的變動,只會影響的類本身,以及中介者,這樣就減小了系統的耦合。一個好的設計,必定不會把所有的對象關係處理邏輯封裝在本類中,而是使用一個專門的類來管理那些不屬於自己的行為。

        我們使用一個例子來說明一下什麼是同事類:有兩個類A和B,類中各有一個數字,並且要保證類B中的數字永遠是類A中數位100倍。也就是說,當修改類A的數時,將這個數字乘以100賦給類B,而修改類B時,要將數除以100賦給類A。類A類B互相影響,就稱為同事類。代碼如下: [java]  view plain copy abstract class AbstractColleague {       protected int number;          public int getNumber() {           return number;       }          public void setNumber(int number){           this.number = number;       }       //抽象方法,修改數字時同時修改關聯對象       public abstract void setNumber(int number, AbstractColleague coll);   }      class

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.