<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    人在江湖

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

    一、 模式定義:
    用一個中介者對象來封裝一系列的對象交互。中介者使各對象不需要顯式的相互引用,從而使其耦合松散,而且可以獨立的改變他們之間的交互。
    二、 結構圖
    (略)
    1) 抽象中介者:定義同事(Colleague)對象到中介者(Mediatior)對象的接口,通常是一個事件方法。
    2) 具體中介者:具體中介者實現抽象中介者聲明的方法。知曉所有的具體同事類,從具體同事接收消息向另外的具體同事類發送命令。
    3) 抽象同事類:定義中介者到同事對象的接口,同事對象只知道中介者而不知道其他同事對象。
    三、一個例子

       1: import java.util.ArrayList;
       2:  
       3: abstract class AbstractMediator{
       4:  public abstract void register(AbstractColleague ac);
       5:  public abstract void ColleagueChanged(AbstractColleague ac);
       6: }
       7: abstract class AbstractColleague{
       8:  private AbstractMediator med;
       9:  public AbstractColleague(AbstractMediator mediator){
      10:   this.med=mediator;
      11:  }
      12:  public abstract void action();
      13:  public void changed(){
      14:   med.ColleagueChanged(this);
      15:  }
      16: }
      17: class ConcreteMediator extends AbstractMediator{
      18:  
      19:  private ArrayList<AbstractColleague> colleagueList=new ArrayList<AbstractColleague>();
      20:  public void register(AbstractColleague ac) {
      21:   colleagueList.add(ac); 
      22:  }
      23:  
      24:  public void ColleagueChanged(AbstractColleague ac) {
      25:   for(int i=0;i<colleagueList.size();i++){
      26:    if(colleagueList.get(i)!=ac){
      27:     colleagueList.get(i).action();
      28:    }
      29:   }
      30:  }
      31: }
      32:  
      33: class ConcreteColleagueA extends AbstractColleague{
      34:     public ConcreteColleagueA(AbstractMediator mediator){
      35:      super(mediator);
      36:      mediator.register(this);
      37:     }
      38:  public void action() {
      39:   System.out.println("AAAAAAAAAAAAAAA");
      40:  }
      41: }
      42: class ConcreteColleagueC extends AbstractColleague{
      43:     public ConcreteColleagueC(AbstractMediator mediator){
      44:      super(mediator);
      45:      mediator.register(this);
      46:     }
      47:  public void action() {
      48:   System.out.println("CCCCCCCCCCCCCCC");
      49:  }
      50: }
      51: class ConcreteColleagueB extends AbstractColleague{
      52:   public ConcreteColleagueB(AbstractMediator mediator){
      53:       super(mediator);
      54:       mediator.register(this);
      55:      }
      56:   public void action() {
      57:    System.out.println("BBBBBBBBBBBBBBB");
      58:   }
      59: }
      60: class test{
      61:  public static void main(String[] args){
      62:  AbstractMediator mediator=new ConcreteMediator();
      63:  AbstractColleague colleagueA=new ConcreteColleagueA(mediator);
      64:  AbstractColleague colleagueB=new ConcreteColleagueB(mediator);
      65:  AbstractColleague colleagueC=new ConcreteColleagueC(mediator);
      66:  colleagueA.changed();
      67:  colleagueB.changed();
      68:  colleagueC.changed();
      69:  }
      70: }
      71:  

    五、 優缺點
    1)減少了子類生成Mediator將原本分布于多個對象間的行為集中在一起,改變這些行為只需生成Mediator的子類即可,這樣各個Colleague類可被重用。
    2)它將各Colleague解耦。Mediator有利于各Colleague間的松耦合,你可以獨立的改變和復用各Colleague類和Mediator類。
    3)它簡化了對象協議用Mediator和各Colleague間的一對多的交互來代替多對多的交互。一對多的關系更易于理解、維護和擴展。
    4)它對對象如何協作進行了抽象將中介作為一個獨立的概念并將其封裝在一個對象中,使你將注意力從對象各自本身的行為轉移到它們之間的交互上來。這有助于弄清楚一個系統中的對象是如何交互的。
    5)它使控制集中化,中介者模式將交互的復雜性變為中介者的復雜性。因為中介者封裝了協議,它可能變得比任一個Colleague都復雜。這可能使得中介者自身成為一個難于維護的龐然大物。
    六、 適用性
    1)一組對象以定義良好但是復雜的方式進行通信。產生的相互依賴關系結構混亂且難以理解。
    2)一個對象引用其他很多對象并且直接與這些對象通信,導致難以復用該對象。

    posted on 2011-02-08 17:32 人在江湖 閱讀(644) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 日韩精品免费在线视频| 亚洲αⅴ无码乱码在线观看性色| 老湿机一区午夜精品免费福利| 成人AV免费网址在线观看| 亚洲日韩中文字幕| 99久久精品日本一区二区免费| 美女被免费网站91色| 亚洲一区视频在线播放| 国产亚洲精品美女| 亚洲国产成人精品91久久久| 青青久久精品国产免费看| 亚洲日本韩国在线| 美女巨胸喷奶水视频www免费| 亚洲人成中文字幕在线观看| 免费国产成人午夜在线观看| 亚洲国产精品国自产电影| 亚洲av纯肉无码精品动漫| www国产亚洲精品久久久日本| 亚洲国产中文在线二区三区免| 亚洲成在人线aⅴ免费毛片| 亚洲日韩国产二区无码| 777爽死你无码免费看一二区| 在线a亚洲v天堂网2019无码| 最近免费中文字幕MV在线视频3| 亚洲国产高清在线| 亚洲人成网站免费播放| 黄色网址在线免费观看| 亚洲精品自产拍在线观看| 最近中文字幕大全中文字幕免费| 2020年亚洲天天爽天天噜| 国产一级淫片a视频免费观看| 国产成人自产拍免费视频| 久久精品国产亚洲AV麻豆不卡| 成人免费视频77777| 一区二区三区免费在线视频 | 国产精品手机在线亚洲| 久久99亚洲综合精品首页| 欧洲精品99毛片免费高清观看| 亚洲 欧洲 日韩 综合在线| 亚洲日本一区二区一本一道| 午夜免费福利视频|