中介者(调停者)模式

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. abstractclass 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. }




网页标题:中介者(调停者)模式
标题URL:http://hbruida.cn/article/pggpsg.html