設計模式(十八):中介者模式

優勢:優化

  ① 將系統的網狀結構,變成以中介者爲中心的星形結構,各對象之間不直接發生聯繫,耦合鬆散spa

  ② 用一箇中介對象來封裝一系列的對象交互。中介者模式使各對象不須要顯式地相互引用,從而使其耦合鬆散,並且能夠獨立地改變它們之間的交互。code

  ③ 提升系統的靈活性,使得各個對象獨立且易於複用。對象

缺點:blog

  ① 中介者類承擔了較多的責任,因此一旦這個中介者類出現了問題,整個系統將會受到重大的影響。class

  ② 新增長一個同事類時,必須去修改具體中介者類,此時能夠使用觀察者模式和狀態模式來優化。引用

適用範圍:方法

   適用於一組對象之間定義良好且複雜的通訊場合,以及分佈在多個類的行爲,但又不想生成太多的子類的場合im

客戶端: 通信

  //中介者

  ConcreteMediator m = new ConcreteMediator();

  //讓兩個同事認識中介者
  ConcreteColleague1 c1 = new ConcreteColleague1(m);
  ConcreteColleague2 c2 = new ConcreteColleague2(m);

  //讓中介者認識兩個同事
  m.setColleague1(c1);
  m.setColleague2(c2);

  //兩同事交流
  c1.send("吃飯了嗎?");
  c2.send("沒有呢");

  //打印  

  同事2獲得消息:吃飯了嗎?
  同事1獲得消息:沒有呢

        /**
         * Colleague 抽象同事類  -- 發送方法(調用Mediator的分發消息方法),應答方法
         * ConcreteColleague1  ConcreteColleague2  同事類實例化
         *
         * Mediator 抽象中介類  -- 判斷分發消息並回復的方法(最後內部調用Colleague的應答方法)
         * ConcreteMediator 中介類實例化
         */
相關文章
相關標籤/搜索