日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

中介者模式小记【原创】

發布時間:2025/4/5 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 中介者模式小记【原创】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

幾天沒寫設計模式的總結了,工作上要學的事情多,覺得寫寫挺麻煩。可是這幾天下來發現沒寫總結后,新學的幾個模式之間的區別都搞混淆了,看來做學問真的是沒有捷徑的。寫吧!

先來看一個公司的部門關系

?

怎么樣,由于各個部門之間都會有交互,是不是顯得邏輯很混亂?可想而知,就算實現了,日后維護也是相當困難的。于是就有了中介者模式:

中介者模式:用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示地互相引用,從而使其耦合松散,而且可以獨立地改變它們之間的交互。簡單的說,就是一個星型拓撲圖

?

抽象中介者類:

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個對象直接的相互依賴關系轉換為中介者和同事類的依賴關系,同事類越多,中介者的邏輯就復雜。

????? 一句話概括中介者模式:橋接模式+子類依賴關系!

總結

以上是生活随笔為你收集整理的中介者模式小记【原创】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。