温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

中介者(调停者)模式

发布时间:2020-08-06 16:51:05 来源:ITPUB博客 阅读:181 作者:壹頁書 栏目:编程语言
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. }



向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI