中介者模式小记【原创】
生活随笔
收集整理的這篇文章主要介紹了
中介者模式小记【原创】
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
幾天沒寫設計模式的總結了,工作上要學的事情多,覺得寫寫挺麻煩。可是這幾天下來發現沒寫總結后,新學的幾個模式之間的區別都搞混淆了,看來做學問真的是沒有捷徑的。寫吧!
先來看一個公司的部門關系
?
怎么樣,由于各個部門之間都會有交互,是不是顯得邏輯很混亂?可想而知,就算實現了,日后維護也是相當困難的。于是就有了中介者模式:
中介者模式:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地互相引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。簡單的說,就是一個星型拓撲圖
?
抽象中介者類:
public abstract class AbstractMediator { protected Purchase purchase; protected Sale sale; protected Stock stock; //構造函數 public AbstractMediator(){ purchase = new Purchase(this); sale = new Sale(this); stock = new Stock(this); } //中介者最重要的方法,叫做事件方法,處理多個對象之間的關系 public abstract void execute(String str,Object...objects); }抽象同事類:
public abstract class AbstractColleague { protected AbstractMediator mediator; public AbstractColleague(AbstractMediator _mediator){ this.mediator = _mediator; } }具體的中介者和具體的同事類就不貼出來了,無非是通過多態調用父類的方法。客戶端有必要提一下:
public class Client { public static void main(String[] args) { AbstractMediator mediator = new Mediator(); //采購人員采購電腦 System.out.println("------采購人員采購電腦--------"); Purchase purchase = new Purchase(mediator); purchase.buyIBMcomputer(100); //銷售人員銷售電腦 System.out.println("\n------銷售人員銷售電腦--------"); Sale sale = new Sale(mediator); sale.sellIBMComputer(1); //庫房管理人員管理庫存 System.out.println("\n------庫房管理人員清庫處理--------"); Stock stock = new Stock(mediator); stock.clearStock(); } }?
????? 我覺得這里有個比較重要的地方是,需要將中介者注入到每一個具體的同事類中,并且具體的中介者中也有各個同事類的對象,他們是相互關聯的。
????? 中介者模式的優點就是減少類間的依賴,把原有的一對多的依賴變成了一對一的依賴,同事類只依賴中介者,減少了依賴,當然也同時減低了類間的耦合。它的缺點呢就是中介者會膨脹的很大,而且邏輯會很復雜,因為所有的原本N個對象直接的相互依賴關系轉換為中介者和同事類的依賴關系,同事類越多,中介者的邏輯就復雜。
????? 一句話概括中介者模式:橋接模式+子類依賴關系!
總結
以上是生活随笔為你收集整理的中介者模式小记【原创】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 现实迷途 第九章 N夜情(上)
- 下一篇: [Tool]靜態程式碼分析-FxCop