设计模式------中介者模式
中介者模式定义
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
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
设计模式------中介者模式相关推荐
- Python设计模式-中介者模式
Python设计模式-中介者模式 代码基于3.5.2,代码如下; #coding:utf-8 #中介者模式class colleague():mediator = Nonedef __init__(s ...
- 7. 星际争霸之php设计模式--中介者模式
题记 ============================================================================== 本php设计模式专辑来源于博客(jy ...
- 【设计模式】Java设计模式 - 中介者模式
Java设计模式 - 中介者模式
- 设计模式中介者模式-备忘录模式-状态模式
设计模式 中介者模式 基本介绍 中介者模式使用一个中介对象来封装一系列的对象交互.中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互. 中介者模式属于行为模式,使 ...
- 设计模式-中介者模式(Mediator Pattern)
设计模式-中介者模式(Mediator Pattern) 文章目录 设计模式-中介者模式(Mediator Pattern) 一.定义 二.概念解释 三.场景 四.实现 1.类图 2.代码实现 五.总 ...
- 大话设计模式—中介者模式
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护.中介者模式属于行为型模式. ...
- [设计模式]中介者模式之Events消息传递实现
这篇文章比较短,修改自 写给大家看的设计模式之中介者中的例子 中介者模式的定义和目的自不必说, 参考上文即可. 本文针对实现方式做一个补充. 中介者模式增加了一个第三方对象(中介者)来控制两个对象(同 ...
- C++设计模式-中介者模式
目录 基本概念 代码与实例 基本概念 中介者模式(Mediator)用一个中介对象来封装一系列的对象交互.中介者使各对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变他们之间的关系. 下面 ...
- 学习设计模式 - 中介者模式
中介者模式 一丶定义 定义一个中介者对象, 封装一系列对象的交互关系, 使得各对象不必显示的相互引用, 从而使其耦合松散, 而且可以独立的改变它们的交互 二丶理解 各对象显式地持有对方引用, 用于对象 ...
- PHP设计模式——中介者模式
声明:本系列博客参考资料<大话设计模式>,作者程杰. 中介者模式用一个中介者对象来封装一系列的对象交互.中介者使得各对象不需要显式地相互引用,从而使其松散耦合,而且可以独立地改变它们之间的 ...
最新文章
- R语言层次聚类(hierarchical clustering):数据缩放、PCA聚类结果可视化、fpc包的clusterboot函数通过bootstrap重采样的方法评估hclust层次聚类的稳定性
- Attention!注意力机制模型最新综述(附下载)
- Tungsten Fabric SDN — 基于 Tags 的安全访问控制策略
- 【Swing编写图形用户界面】操作系统之磁盘调度算法图形界面和性能比较
- c语言stl模板,c/c++开发分享C++ 标准模板库 STL 顺序容器详解
- 音视频技术开发周刊 | 137
- 关于java.util.ConcurrentModificationException和remove倒数第二个元素
- 马斯克再带货狗狗币:超7成网友票选狗狗币为未来货币
- 日常摄影练习时,有什么技巧能提高照片品质?
- java list 分组_Java8 快速实现List转map 、分组、过滤等操作
- iOS开发之跳转指定的tabbar控制器(二级页面跳转到指定的tabbar页面)
- 元转万元单位换算_元要以万元为单位要怎么换算
- Oracle in 不能超过1000的解决方案
- 【三】仿射变换、投影变换的矩阵形式和特点归纳
- 记一次 python 截取高低位(>> 和 运算符)
- amd r7 2700u linux,满血双通道R7 2700U?AMD锐龙APU测试
- 2022视频编码招聘面经
- java 手绘_用普通照片生成手绘素描
- PHP CURL 请求
- 固体核磁常见问题解答
热门文章
- c++ memset 语言_C++中memset函数用法详解
- yum error: rpmdb: BDB0113 Thread/process
- Sagemaker快速学习
- html应用模板,HTML5--应用网页模板
- linux内核定义,Linux内核定义的常量
- filezilla 设置服务器_java项目部署到linux服务器,微信小程序后台springboot项目部署到腾讯云服务器(图文详解)...
- 肝,Python3中RPC实践
- 人脸识别的时候,一定要穿上衣服!否则 ...
- 卧槽!手机上竟然也能用Win10...
- 突发!Windows XP源代码泄露