摘要:中介者模式一中介者模式定義用一個(gè)中介者對(duì)象封裝一系列的對(duì)象交互,中介者使各對(duì)象不需要顯示的相互作用,從而使耦合松散,而且可以獨(dú)立的改變他們之間的交互角色抽象中介者類具體中介者實(shí)現(xiàn)類同事類二具體實(shí)現(xiàn)創(chuàng)建抽象中介者對(duì)象創(chuàng)建具體中介者對(duì)象創(chuàng)建同事
中介者模式
一. 中介者模式 1.1 定義用一個(gè)中介者對(duì)象封裝一系列的對(duì)象交互,中介者使各對(duì)象不需要顯示的相互作用,從而使耦合松散,而且可以獨(dú)立的改變他們之間的交互.
1.2 角色抽象中介者類(AbstractMediator).
具體中介者實(shí)現(xiàn)類(Mediator).
同事類(Colleague).
二. 具體實(shí)現(xiàn) 2.1 創(chuàng)建抽象中介者對(duì)象public abstract class AbstractMediator { private ColleagueA colleagueA; private ColleagueB colleagueB; public abstract void executeToA(); public abstract void executeToB(); public void setColleagueA(ColleagueA colleagueA) { this.colleagueA = colleagueA; } public void setColleagueB(ColleagueB colleagueB) { this.colleagueB = colleagueB; } }2.2 創(chuàng)建具體中介者對(duì)象
public class Mediator extends AbstractMediator { public void executeToA() { System.out.println("Mediator executeToA ..."); } public void executeToB() { System.out.println("Mediator executeToB ..."); } }2.3 創(chuàng)建同事類
public class ColleagueA { private AbstractMediator mediator; public ColleagueA(AbstractMediator mediator){ this.mediator = mediator; } public void print(){ System.out.println("ColleagueA print ... "); mediator.executeToB(); } } public class ColleagueB { private AbstractMediator mediator; public ColleagueB(AbstractMediator mediator){ this.mediator = mediator; } public void print(){ System.out.println("ColleagueB print ..."); mediator.executeToA(); } }2.4 調(diào)用
public static void main(String[] args) { AbstractMediator mediator = new Mediator(); ColleagueA colleagueA = new ColleagueA(mediator); ColleagueB colleagueB = new ColleagueB(mediator); mediator.setColleagueA(colleagueA); mediator.setColleagueB(colleagueB); colleagueA.print(); colleagueB.print(); }2.5 輸出
ColleagueA print ... Mediator executeToB ... ColleagueB print ... Mediator executeToA ...三. 優(yōu)缺點(diǎn) 3.1 優(yōu)點(diǎn)
各個(gè)同事類之間的解耦.
降低類的復(fù)雜度.
3.2 缺點(diǎn)同事類過(guò)多會(huì)使中介者龐大,難以維護(hù).
四. 源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/69633.html
摘要:中介者模式就是簡(jiǎn)化這種關(guān)系的模式,有兩個(gè)角色關(guān)系成員中介者。成員,不必包含與他有關(guān)系的成員,他只需包含一個(gè)中介者,通過(guò)中介發(fā)消息,是委托給中介。他有一個(gè)發(fā)消息的方法,中介通過(guò)判定成員來(lái)確定恢復(fù)消息。先看圖: showImg(https://user-gold-cdn.xitu.io/2019/5/21/16ada9908dd0b898); 有很多孤立的人這里是3個(gè),如果有100個(gè),是不是圖很...
摘要:工廠設(shè)計(jì)模式工廠設(shè)計(jì)模式,主要用于進(jìn)行實(shí)例化對(duì)象時(shí)的解耦操作,避免使用關(guān)鍵字實(shí)例化對(duì)象,通過(guò)反射,根據(jù)類名稱動(dòng)態(tài)創(chuàng)建對(duì)象示例靜態(tài)工廠模式構(gòu)造方法私有化獲取指定類名稱的對(duì)象動(dòng)態(tài)代理模式動(dòng)態(tài)代理模式,主要用于對(duì)同一接口子類的相同邏輯進(jìn)行代理操作 工廠設(shè)計(jì)模式 工廠設(shè)計(jì)模式,主要用于進(jìn)行實(shí)例化對(duì)象時(shí)的解耦操作,避免使用new關(guān)鍵字實(shí)例化對(duì)象,通過(guò)反射,根據(jù)類名稱動(dòng)態(tài)創(chuàng)建對(duì)象 示例: pa...
摘要:在地球上最大的中介者就是聯(lián)合國(guó)了,它主要用來(lái)維護(hù)國(guó)際和平與安全解決國(guó)際間經(jīng)濟(jì)社會(huì)文化和人道主義性質(zhì)的問(wèn)題。所以對(duì)于關(guān)系比較復(fù)雜的系統(tǒng),我們?yōu)榱藴p少對(duì)象之間的關(guān)聯(lián)關(guān)系,使之成為一個(gè)松耦合系統(tǒng),我們就需要使用中介者模式。 中介者模式(Mediator Pattern)屬于行為型模式的一種,用一個(gè)中介對(duì)象來(lái)封裝一系列的對(duì)象交互。中介者使各對(duì)象不需要顯式地相互引用,從而使其耦合松散,而且可以獨(dú)...
摘要:那在我們的程序設(shè)計(jì)中有沒(méi)有這樣的模式有的,中介者模式應(yīng)運(yùn)而生,目的就是處理這樣的情景問(wèn)題。最后來(lái)看客戶端的實(shí)現(xiàn),代碼如下被攻打,請(qǐng)求支援可以看到,表面上請(qǐng)求還是從發(fā)出,但是已經(jīng)委托了中介者進(jìn)行業(yè)務(wù)邏輯和流程的處理。 本篇文章已授權(quán)微信公眾號(hào) guolin_blog (郭霖)獨(dú)家發(fā)布 小時(shí)候鐘愛(ài)戰(zhàn)爭(zhēng)片,《地道戰(zhàn)》、《雞毛信》、《鐵道游擊隊(duì)》一系列的老電影,咦~想起都激動(dòng)得起雞皮疙瘩。不過(guò)...
摘要:舉個(gè)例子淘寶商鋪賣家在淘寶上開(kāi)了一個(gè)相機(jī)店最近都有意愿去買但是覺(jué)得價(jià)格稍貴,因此暫時(shí)不打算入手,想等價(jià)格稍微便宜一點(diǎn)后再入手,所以這個(gè)人通過(guò)淘寶先關(guān)注賣家的相機(jī)店。等到賣家的相機(jī)打折后,淘寶會(huì)向這個(gè)人推送打折消息。 Observer觀察者模式 Observer觀察者模式和Pub/sub模式事實(shí)上都是同一套路。這種模式建立起了不同對(duì)象之間的依賴關(guān)系: showImg(https://se...
閱讀 1691·2019-08-30 13:04
閱讀 2244·2019-08-30 12:59
閱讀 1811·2019-08-29 18:34
閱讀 1918·2019-08-29 17:31
閱讀 1301·2019-08-29 15:42
閱讀 3592·2019-08-29 15:37
閱讀 2918·2019-08-29 13:45
閱讀 2813·2019-08-26 13:57