用途
中介者模式 (Mediator)
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式是一种行为型模式。
结构
aaarticlea/png;base64,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" alt="" />
图-中介者模式结构图
Mediator : 为 Colleague 对象定义一个交流接口。
abstract class Mediator {
public abstract void Send(String message, Colleague colleague);
}
ConcreteMediator : 实现 Mediator 中的交流接口。 这个类中需要了解并维护所有的 colleague 对象。
class ConcreteMediator extends Mediator {
private ConcreteColleague1 colleague1;
private ConcreteColleague2 colleague2;
public void setColleague1(ConcreteColleague1 colleague1) {
this.colleague1 = colleague1;
}
public void setColleague2(ConcreteColleague2 colleague2) {
this.colleague2 = colleague2;
}
@Override
public void Send(String message, Colleague colleague) {
if (colleague == colleague1) {
colleague2.Notify(message);
} else if (colleague == colleague2){
colleague1.Notify(message);
} else {
System.out.println("Error!");
}
}
}
Colleague组 : 每个 Colleague 对象应该知道它的 Mediator 对象,但不知道其他同事对象。它只能联系 Mediator 对象。
abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public void Send(String message) {
mediator.Send(message, this);
}
public abstract void Notify(String message);
}
class ConcreteColleague1 extends Colleague {
public ConcreteColleague1(Mediator mediator) {
super(mediator);
}
@Override
public void Notify(String message) {
System.out.println("同事1得到信息:" + message);
}
}
class ConcreteColleague2 extends Colleague {
public ConcreteColleague2(Mediator mediator) {
super(mediator);
}
@Override
public void Notify(String message) {
System.out.println("同事2得到信息:" + message);
}
}
测试代码
public class MediatorPattern {
public static void main(String[] args) {
ConcreteMediator mediator = new ConcreteMediator();
ConcreteColleague1 colleague1 = new ConcreteColleague1(mediator);
ConcreteColleague2 colleague2 = new ConcreteColleague2(mediator);
mediator.setColleague1(colleague1);
mediator.setColleague2(colleague2);
colleague1.Send("How are you?");
colleague2.Send("Fine, thank you. And you?");
colleague1.Send("I'm fine. Thankes.");
}
}
运行结果
同事2得到信息:How are you?
同事1得到信息:Fine, thank you. And you?
同事2得到信息:I'm fine. Thankes.
应用场景
中介者模式一般用于定义良好但是交互较为负责的对象集合。产生的相互依赖关系是无结构化的并且难以理解。
和很多其他对象有引用关系以及交互的对象很难被重用。
想定制一个分布在多个类中的行为,而又不想生成太多的子类的场合。
推荐
本文属于 JAVA设计模式系列 。
参考资料
《大话设计模式》
《HeadFirst设计模式》
- Java设计模式----中介者模式
说到中介大家都不会陌生,买房子租房子有中介,出国留学有中介,买卖二手车还是有中介.那么中介到底是个什么角色呢?实际上,中介就是让买卖双方不必面对面直接交流,由他/她来完成买卖双方的交易,达到解耦买卖人 ...
- Java设计模式-中介者模式(Mediator)
中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改.如果使用中介者模式,只需关心和Mediator类的关系 ...
- Java设计模式—中介者模式
中介者模式是一种并不常用的模式,在此简单阐述阐述. 定义:用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 类型:行为类模式 ...
- Java设计模式之代理模式(静态代理和JDK、CGLib动态代理)以及应用场景
我做了个例子 ,需要可以下载源码:代理模式 1.前言: Spring 的AOP 面向切面编程,是通过动态代理实现的, 由两部分组成:(a) 如果有接口的话 通过 JDK 接口级别的代理 (b) 如果没 ...
- java设计模式6——代理模式
java设计模式6--代理模式 1.代理模式介绍: 1.1.为什么要学习代理模式?因为这就是Spring Aop的底层!(SpringAop 和 SpringMvc) 1.2.代理模式的分类: 静态代 ...
- Java设计模式——装饰者模式
JAVA 设计模式 装饰者模式 用途 装饰者模式 (Decorator) 动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator 模式相比生成子类更为灵活. 装饰者模式是一种结构式模式 ...
- 7. 星际争霸之php设计模式--中介者模式
题记==============================================================================本php设计模式专辑来源于博客(jymo ...
- 浅析JAVA设计模式之工厂模式(一)
1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...
- JAVA设计模式--装饰器模式
装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...
随机推荐
- i18n国际化
<% request.setAttribute("date", new Date()); request.setAttribute("salary", ...
- QC11客户端安装
win10使用hp qc11 步骤1:安装vcredist_x86,32位 步骤2:安装浏览器客户端 ALMExplorerAddIn,11版本 可能遇到的问题 1. 出现Initialization ...
- 使用Roboguice依赖注入规划Android项目
前言 好久没写博客了,罪过啊-记事本里累积了不少东西,整理整理放上来. 关于依赖注入 Dependency Injection( 依赖注入)可以很好的帮助我们分离模块,降低耦合.提高可测试性.(PS: ...
- VS2012编译的Windows服务启动后立即停止的解决方案
ATL中的BUG,在没有COM的服务中,使用_ATL_NO_COM_SUPPORT. 并在服务中添加下面的代码 #if defined(_ATL_NO_COM_SUPPORT) HRESULT Pre ...
- Oracle存在修改,不存在插入记录
接触编程以来,在数据存储方面一直用的MS SQL.Oracle这名字对我来说是如此的熟悉,但是对其内容却很陌生,最近公司的一个项目用起了Oracle,所以也开始高调的用起了Oracle.在没有接触Or ...
- CocoSocket开源下载与编写经验分享
CocoSocket分享 cocos2dx 3.1都出了,但依然没有发现与它原生的SOCKET支持,于是,这几天在家,手工撸了一个. 目前版本对IOS,ANDROID,WINDOWS支持良好.且为异步 ...
- Robotium的左右为难 -- enterText
最近测试框架收到反馈,详查后发现了一个Robotium的问题,甚有趣,遂记录. 问题场景: Robotium.enterText输入数据后,点击"发送"按钮,多数情况下失败,少数时 ...
- 看svn用户组管理功能的产品设计
我负责公司的svn配置.用了近一年了,今天饶有兴致,分享一下svn的用户组管理功能,这个产品设计值得借鉴,简单易用. svn用户组管理的功能描述:新建用户组,并给组分配成员用户:编辑用户组,包括修改组 ...
- Atitit图像识别的常用特征大总结attilax大总结
Atitit图像识别的常用特征大总结attilax大总结 1.1. 常用的图像特征有颜色特征.纹理特征.形状特征.空间关系特征. 1 1.2. HOG特征:方向梯度直方图(Histogram of O ...
- Redis 监控
redis 监控有 redis-live 和 redis-stat Redis-Live是一个用来监控redis实例,分析查询语句并且有web界面的监控工具,使用python编写. redis-sta ...