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

首頁 > 學院 > 開發設計 > 正文

設計模式-中介者模式

2019-11-11 05:05:37
字體:
來源:轉載
供稿:網友

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

定義:

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

使用場景:

當對象之間的交互操作很多且每個對象的行為操作都彼此依賴時,為防止在修改一個對象的行為時,同時涉及修改很多其他對象的行為,可采用中介者模式,來解決緊耦合問題。該模式將對象之間的多對多關系變成一對多關系,中介者對象將系統從網狀結構變成以調停者為中心的星形結構,達到降低系統的復雜性,提高可擴展的作用。

2.中介者模式的優缺點

2.1優點

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

2.2缺點

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

3.注意實現

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

4.中介者模式的實現方式

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中的實際應用

Android的Activity實際就是一個中介者模式,形形式式的View交互都在Activity中統一執行,View之間彼此不交互。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91精品国产九九九久久久亚洲 | 亚洲成人第一页 | 狠狠干五月 | 伊人久操视频 | 在线亚洲综合 | 国产污污视频 | 久草在线新视觉 | 精品国产91久久久久久久妲己 | 粉嫩粉嫩一区二区三区在线播放 | 久久中文免费 | 操操操日日日干干干 | 国产99久久久久久免费看农村 | 国产精品1区 | 黄网站在线观 | 久久久久久久久久亚洲精品 | 羞羞视频免费网站日本动漫 | 99日韩精品视频 | 乱淫67194| 在线观看免费污视频 | 成人黄色小视频在线观看 | 成年人在线视频观看 | 亚洲精品xxx | 午夜爽爽爽男女免费观看hd | 97青青草视频 | 天天躁狠狠躁夜躁2020挡不住 | 黄色网址在线免费 | 国产精品一区二区三区在线 | 久久免费视频3 | 国产午夜精品一区二区三区嫩草 | 日本黄色大片免费 | 欧美77| 九九热视频免费 | 91精品免费在线 | 91精品福利视频 | 亚洲卡通动漫在线观看 | 黄色特级一级片 | 中国嫩模一级毛片 | 久久久青| 激情福利视频 | 亚洲欧美日韩免费 | 羞羞视频在线免费 |