国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

設計模式-中介者模式

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之間彼此不交互。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 交城县| 青田县| 南投市| 绍兴县| 海丰县| 黄冈市| 林州市| 平泉县| 雷州市| 平和县| 河池市| 江达县| 浦东新区| 含山县| 双峰县| 三原县| 南和县| 徐闻县| 柘荣县| 河源市| 宜都市| 巴马| 旬阳县| 丹江口市| 娄烦县| 柯坪县| 齐齐哈尔市| 遂平县| 延边| 馆陶县| 郴州市| 山东| 甘谷县| 富顺县| 西华县| 井研县| 丹凤县| 东海县| 临沂市| 怀集县| 临夏县|