中介者(調停者)模式

壹頁書發表於2017-03-30
http://www.cnblogs.com/java-my-life/archive/2012/06/20/2554024.html





  1. interface Mediator {
  2.     /**
  3.      * 同事物件在自身改變的時候來通知調停者方法 讓調停者去負責相應的與其他同事物件的互動
  4.      */
  5.     public void changed(Colleague c);
  6. }

  7. class ConcreteMediator implements Mediator {
  8.     // 持有並維護同事A
  9.     private ConcreteColleagueA colleagueA;
  10.     // 持有並維護同事B
  11.     private ConcreteColleagueB colleagueB;

  12.     public void setColleagueA(ConcreteColleagueA colleagueA) {
  13.         this.colleagueA = colleagueA;
  14.     }

  15.     public void setColleagueB(ConcreteColleagueB colleagueB) {
  16.         this.colleagueB = colleagueB;
  17.     }

  18.     @Override
  19.     public void changed(Colleague c) {
  20.         /**
  21.          * 某一個同事類發生了變化,通常需要與其他同事互動 具體協調相應的同事物件來實現協作行為
  22.          */
  23.     }

  24. }

  25. abstract class Colleague {
  26.     // 持有一個調停者物件
  27.     private Mediator mediator;

  28.     /**
  29.      * 建構函式
  30.      */
  31.     public Colleague(Mediator mediator) {
  32.         this.mediator = mediator;
  33.     }

  34.     /**
  35.      * 獲取當前同事類對應的調停者物件
  36.      */
  37.     public Mediator getMediator() {
  38.         return mediator;
  39.     }

  40. }

  41. class ConcreteColleagueA extends Colleague {

  42.     public ConcreteColleagueA(Mediator mediator) {
  43.         super(mediator);
  44.     }

  45.     /**
  46.      * 示意方法,執行某些操作
  47.      */
  48.     public void operation() {
  49.         // 在需要跟其他同事通訊的時候,通知調停者物件
  50.         getMediator().changed(this);
  51.     }
  52. }

  53. class ConcreteColleagueB extends Colleague {

  54.     public ConcreteColleagueB(Mediator mediator) {
  55.         super(mediator);
  56.     }

  57.     /**
  58.      * 示意方法,執行某些操作
  59.      */
  60.     public void operation() {
  61.         // 在需要跟其他同事通訊的時候,通知調停者物件
  62.         getMediator().changed(this);
  63.     }
  64. }



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2136362/,如需轉載,請註明出處,否則將追究法律責任。

相關文章