中介者模式定义

用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

Mediator抽象中介者角色

抽象中介者角色定义统一的接口,用于各同事角色之间的通信。

public abstract class Mediator{//定义同事类  protected ConcreteColleague1 c1;protected ConcreteColleague2 c2;    //通过getter/setter方法把同事类注入进来public ConcreteColleague1 getC1(){return c1;}public void setC1(ConcreteColleague1 c1){this.c1 = c1;}public ConcreteColleague2 getC2(){return c2;}public void setC2(ConcreteColleague2 c2){this.c2 = c2;}//中介者模式的业务逻辑public abstract void doSomething1();public abstract void doSomething2();
}

Concrete Mediator 具体中介者角色

具体中介者角色通过协调各同事实现协作行为,因此它必须依赖于各个同事角色

public class ConcreteMediator extends Mediator{@Overridepublic void doSomething1(){//调用同事类的方法,只要是public方法都可以调用super.c1.selfMethod1();super.c2.selfMethod2();}@Overridepublic void doSomething2(){//调用同事类的方法,只要是public方法都可以调用super.c1.selfMethod1();super.c2.selfMethod2();}
}

Colleague同事角色

每一个同事角色都知道中介者角色,而且与其他的同事角色通信的时候,一定要通过中介者角色协作。每个同事类的行为分为两种:一种是同事本身的行为,比如改变对象本身的状态,处理自己的行为等,这种方法叫做自发行为,与其他的同事类或中介者没有任何的依赖;第二种是必须依赖中介者才能完成的行为,叫做依赖方法。

抽象同事类

public abstract class Colleague{protected Mediator mediator;public Colleague(Mediator mediator){this.mediator = mediator;}
}

具体同事类

public class ConcreteColleague1 extends Colleague{//通过构造函数传递中介者public ConcreteColleague1(Mediator mediator){super(mediator);}//自有方法 self-methodpublic void depMethod1(){//处理自己的业务逻辑
    }//依赖方法 dep-methodpublic void depMethod2(){//处理自己的业务逻辑//自己不能处理的业务逻辑,委托给中介者处理super.mediator.doSomething2();}}public class ConcreteColleague2 extends Colleague{//通过构造函数传递中介者public ConcreteColleague2(Mediator mediator){super(mediator);}//自有方法 self-methodpublic void depMethod1(){//处理自己的业务逻辑
    }//依赖方法 dep-methodpublic void depMethod2(){//处理自己的业务逻辑//自己不能处理的业务逻辑,委托给中介者处理super.mediator.doSomething2();}}

中介者模式的缺点:中介者类会膨胀得很大,而且逻辑很复杂。

转载于:https://www.cnblogs.com/maple92/p/7327947.html

设计模式------中介者模式相关推荐

  1. Python设计模式-中介者模式

    Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...

  2. 7. 星际争霸之php设计模式--中介者模式

    题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...

  3. 【设计模式】Java设计模式 - 中介者模式

    Java设计模式 - 中介者模式

  4. 设计模式中介者模式-备忘录模式-状态模式

    设计模式 中介者模式 基本介绍 中介者模式使用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行为模式,使 ...

  5. 设计模式-中介者模式(Mediator Pattern)

    设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...

  6. 大话设计模式—中介者模式

    中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. ...

  7. [设计模式]中介者模式之Events消息传递实现

    这篇文章比较短,修改自 写给大家看的设计模式之中介者中的例子 中介者模式的定义和目的自不必说, 参考上文即可. 本文针对实现方式做一个补充. 中介者模式增加了一个第三方对象(中介者)来控制两个对象(同 ...

  8. C++设计模式-中介者模式

    目录 基本概念 代码与实例 基本概念 中介者模式(Mediator)用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的关系. 下面 ...

  9. 学习设计模式 - 中介者模式

    中介者模式 一丶定义 定义一个中介者对象, 封装一系列对象的交互关系, 使得各对象不必显示的相互引用, 从而使其耦合松散, 而且可以独立的改变它们的交互 二丶理解 各对象显式地持有对方引用, 用于对象 ...

  10. PHP设计模式——中介者模式

    声明:本系列博客参考资料<大话设计模式>,作者程杰. 中介者模式用一个中介者对象来封装一系列的对象交互.中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的 ...

最新文章

  1. R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性
  2. Attention!注意力机制模型最新综述(附下载)
  3. Tungsten Fabric SDN — 基于 Tags 的安全访问控制策略
  4. 【Swing编写图形用户界面】操作系统之磁盘调度算法图形界面和性能比较
  5. c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解
  6. 音视频技术开发周刊 | 137
  7. 关于java.util.ConcurrentModificationException和remove倒数第二个元素
  8. 马斯克再带货狗狗币:超7成网友票选狗狗币为未来货币
  9. 日常摄影练习时,有什么技巧能提高照片品质?
  10. java list 分组_Java8 快速实现List转map 、分组、过滤等操作
  11. iOS开发之跳转指定的tabbar控制器(二级页面跳转到指定的tabbar页面)
  12. 元转万元单位换算_元要以万元为单位要怎么换算
  13. Oracle in 不能超过1000的解决方案
  14. 【三】仿射变换、投影变换的矩阵形式和特点归纳
  15. 记一次 python 截取高低位(>> 和 运算符)
  16. amd r7 2700u linux,满血双通道R7 2700U?AMD锐龙APU测试
  17. 2022视频编码招聘面经
  18. java 手绘_用普通照片生成手绘素描
  19. PHP CURL 请求
  20. 固体核磁常见问题解答

热门文章

  1. c++ memset 语言_C++中memset函数用法详解
  2. yum error: rpmdb: BDB0113 Thread/process
  3. Sagemaker快速学习
  4. html应用模板,HTML5--应用网页模板
  5. linux内核定义,Linux内核定义的常量
  6. filezilla 设置服务器_java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)...
  7. 肝,Python3中RPC实践
  8. 人脸识别的时候,一定要穿上衣服!否则 ...
  9. 卧槽!手机上竟然也能用Win10...
  10. 突发!Windows XP源代码泄露