麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

設(shè)計模式-中介者模式

2019-11-11 05:05:37
字體:
供稿:網(wǎng)友

1.中介者模式的定義及使用場景

定義:

中介者模式包裝了一系列對象相互作用的方式,使得這些對象不必相互明顯作用。從而使他們可以松散耦合。當(dāng)某些對象之間的作用發(fā)生改變時,不會立即影響其他的一些對象之間的作用。保證這些作用可以彼此獨立的變化。中介者模式將多對多的相互作用轉(zhuǎn)化為一對多的相互作用。中介者模式將對象的行為和協(xié)作抽象化,把對象在小尺度的行為上與其他對象的相互作用分開處理。

使用場景:

當(dāng)對象之間的交互操作很多且每個對象的行為操作都彼此依賴時,為防止在修改一個對象的行為時,同時涉及修改很多其他對象的行為,可采用中介者模式,來解決緊耦合問題。該模式將對象之間的多對多關(guān)系變成一對多關(guān)系,中介者對象將系統(tǒng)從網(wǎng)狀結(jié)構(gòu)變成以調(diào)停者為中心的星形結(jié)構(gòu),達到降低系統(tǒng)的復(fù)雜性,提高可擴展的作用。

2.中介者模式的優(yōu)缺點

2.1優(yōu)點

中介者的模式的優(yōu)點就是減少類間的依賴,把原有的一對多的依賴變成一對一的依賴,同事類只依賴中介者,減少依賴,當(dāng)然同時也降低了類間的耦合

2.2缺點

中介者模式的缺點就是中介者會膨脹得很大,而且邏輯復(fù)雜,原本N個對象直接的相互依賴關(guān)系轉(zhuǎn)換為中介者和同事類的依賴關(guān)系,同事類約多,中介者的邏輯就越復(fù)雜

3.注意實現(xiàn)

中介者模式是一個非常好的封裝模式,也是一個很容易被濫用的模式,一個對象依賴幾個對象是再正常不過的事情,但是純理論家就會要求使用中介者模式來封裝這種依賴關(guān)系,這是非常危險的!使用中介者模式就必然會帶來中介者的膨脹問題,這在一個項目中是很不恰當(dāng)?shù)摹?梢栽谌缦碌那闆r嘗試使用中介者模式:1)N個對象直接產(chǎn)生了相互的依賴關(guān)系(N>2)2)對個對象有依賴關(guān)系,但是依賴的行為尚不確定或者有發(fā)送改變的可能,在這種情況下一般建議采用中介者模式,降低變更引起的風(fēng)險擴散3)產(chǎn)品開發(fā)。一個明顯的例子就是MVC框架,把中介者模式應(yīng)用到產(chǎn)品中,可以提升產(chǎn)品的性能擴展性,但是對于項目開發(fā)就未必,因為項目是以交付投產(chǎn)為目標(biāo),而產(chǎn)品是以穩(wěn)定、高效、擴展為宗旨。

4.中介者模式的實現(xiàn)方式

public abstract class Colleague {    Mediator mediator;    public Colleague(Mediator mediator) {        this.mediator = mediator;    }    public abstract void action();}
public class ConcreteColleagueA extends Colleague {    public ConcreteColleagueA(Mediator mediator) {        super(mediator);    }    @Override    public void action() {        System.out.PRintln("ColleagueA do action!");    }    public void doPrivateA() {        System.out.println("ColleagueA do private!");    }}
public class ConcreteColleagueB extends Colleague {    public ConcreteColleagueB(Mediator mediator) {        super(mediator);    }    @Override    public void action() {        System.out.println("ColleagueB do action!");    }    public void doPrivateB() {        System.out.println("ColleagueB do private!");    }}
 public abstract class Mediator {    protected ConcreteColleagueA concreteColleagueA;    protected  ConcreteColleagueB concreteColleagueB;    public abstract void method();    public void setConcreteColleagueA(ConcreteColleagueA concreteColleagueA) {        this.concreteColleagueA = concreteColleagueA;    }    public void setConcreteColleagueB(ConcreteColleagueB concreteColleagueB) {        this.concreteColleagueB = concreteColleagueB;    }}
public class ConcreteMediator extends Mediator {    @Override    public void method() {        concreteColleagueA.action();        concreteColleagueB.action();        concreteColleagueA.doPrivateA();        concreteColleagueB.doPrivateB();    }}

5.中介者模式在Android中的實際應(yīng)用

Android的Activity實際就是一個中介者模式,形形式式的View交互都在Activity中統(tǒng)一執(zhí)行,View之間彼此不交互。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久草在线播放视频 | 久久久久北条麻妃免费看 | 亚洲第一页夜 | 91精品免费观看 | fc2国产成人免费视频 | 国产精品区在线12p 午夜视频色 | 成人免费网站在线观看 | 久久国产精品99国产 | 91精品久久久久久久 | 久久逼网| 欧美一级片 在线播放 | 曰韩精品 | 欧美一级黄色录像片 | 99这里精品 | 国产精品久久久久久久久久久久久久久 | 国产无遮挡一区二区三区毛片日本 | 亚洲网站在线观看视频 | 国产亚洲美女精品久久久2020 | 2021国产精品视频 | 一本一本久久a久久精品综合小说 | 国产精品视频六区 | 国产91一区 | 日韩视| 黄色成人av在线 | 中国免费一级毛片 | 99re久久最新地址获取 | 色欧美视频 | 草莓视频久久 | 福利在线免费 | 国产激爽大片在线播放 | 国产精品久久久久久久久久电影 | www.com超碰 | 99精品视频免费 | 精品三区视频 | 国产成人自拍视频在线 | 成人短视频在线观看 | 国产精品久久久久av | 精品国产欧美一区二区 | 欧美女人天堂 | 国产在线观看 | 欧美日韩一区,二区,三区,久久精品 |