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

首頁(yè) > 編程 > Java > 正文

Java設(shè)計(jì)模式之中介模式(Mediator模式)介紹

2019-11-26 15:16:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

Mediator定義:用一個(gè)中介對(duì)象來(lái)封裝一系列關(guān)于對(duì)象交互行為。

為何使用Mediator模式/中介模式

各個(gè)對(duì)象之間的交互操作非常多,每個(gè)對(duì)象的行為操作都依賴彼此對(duì)方,修改一個(gè)對(duì)象的行為,同時(shí)會(huì)涉及到修改很多其他對(duì)象的行為,如果使用Mediator模式,可以使各個(gè)對(duì)象間的耦合松散,只需關(guān)心和 Mediator的關(guān)系,使多對(duì)多的關(guān)系變成了一對(duì)多的關(guān)系,可以降低系統(tǒng)的復(fù)雜性,提高可修改擴(kuò)展性。

如何使用中介模式

首先 有一個(gè)接口,用來(lái)定義成員對(duì)象之間的交互聯(lián)系方式:

復(fù)制代碼 代碼如下:

    public interface Mediator { }

Meiator具體實(shí)現(xiàn),真正實(shí)現(xiàn)交互操作的內(nèi)容:
復(fù)制代碼 代碼如下:

public class ConcreteMediator implements Mediator {
   //假設(shè)當(dāng)前有兩個(gè)成員.
   private ConcreteColleague1 colleague1 = new ConcreteColleague1();
   private ConcreteColleague2 colleague2 = new ConcreteColleague2();
   ...
}

再看看另外一個(gè)參與者:成員,因?yàn)槭墙换バ袨椋夹枰p方提供一些共同接口,這種要求在Visitor Observer等模式中都是相同的。
復(fù)制代碼 代碼如下:

public class Colleague {
   private Mediator mediator;
   public Mediator getMediator() {
      return mediator;
   }
   public void setMediator( Mediator mediator ) {
      this.mediator = mediator;
   }
}
public class ConcreteColleague1 { }
public class ConcreteColleague2 { }

每個(gè)成員都必須知道Mediator,并且和 Mediator聯(lián)系,而不是和其他成員聯(lián)系。

至此,Mediator模式框架完成,可以發(fā)現(xiàn)Mediator模式規(guī)定不是很多,大體框架也比較簡(jiǎn)單,但實(shí)際使用起來(lái)就非常靈活。

Mediator模式在事件驅(qū)動(dòng)類(lèi)應(yīng)用中比較多,例如界面設(shè)計(jì)GUI、聊天、消息傳遞等,在聊天應(yīng)用中,需要有一個(gè)MessageMediator,專(zhuān)門(mén)負(fù)責(zé)request/reponse之間任務(wù)的調(diào)節(jié)。

MVC是J2EE的一個(gè)基本模式,View Controller是一種Mediator,它是Jsp和服務(wù)器上應(yīng)用程序間的Mediator。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 神池县| 德保县| 合水县| 泸定县| 娄烦县| 银川市| 云和县| 扶绥县| 黑山县| 蒙山县| 罗甸县| 琼结县| 稷山县| 沁阳市| 新竹市| 兴和县| 彭州市| 潮安县| 灵川县| 南陵县| 宜兰县| 乐陵市| 宿州市| 秦安县| 安阳县| 云浮市| 穆棱市| 甘孜县| 广德县| 青神县| 金沙县| 凯里市| 尤溪县| 长兴县| 福清市| 海晏县| 远安县| 鲜城| 汕头市| 东光县| 建湖县|