中介者模式(Mediator Pattern)。
来源:互联网 发布:紫砂壶开壶 知乎 编辑:程序博客网 时间:2024/05/21 19:47
定义:
用一个中介对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互。
中介者模式由以下几部分组成:
- Mediator抽象中介者角色
- Concrete Mediator具体中介者角色
- Colleague同事角色
这个基类也非常简单。一般来说,中介者模式中的抽象都比较简单,是为了建立这个中介而服务的。
具体同事类,另一个代码相同,省略
public class ConcreColleague1 extends Colleague {
// 通过构造函数传递中介者
public ConcreColleague1(Mediator _mediator) {
super(_mediator);
}
// 自有方法 self-method
public void selfMethod1(){
// 处理自己的业务逻辑
}
// 依赖方法 dep-method
public void depMethod1(){
// 处理自己的业务
//自己不能处理的业务逻辑,委托给中介者处理
super.mediator.doSomething1();
}
}
为什么同事类要使用构造函数注入中介者,而中介者使用getter/setter方式注入同事类呢?这是因为同事类必须有中介者,而中介者却可以只有部分同事类。
优点:
中介者模式的优点就是减少类间的依赖,把原有的一对多的依赖变成了一对一的依赖,同事类只依赖中介者,减少了依赖,当然同事也降低了类间的耦合。
缺点:
中介者模式的缺点就是中介者会膨胀的很大,而且逻辑复杂,原本N个对象直接的相互依赖关系转换为中介者和同事类的依赖关系,同事类越多,中介者的逻辑越复杂。
使用场景:
中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状结构。在这种情况下一定要考虑使用中介者模式,这有利于把蜘蛛网梳理为星型结构,使原本复杂混乱的关系变得清晰简单。
实际应用:
中介者也叫走调停者模式,是什么意思呢?一个对象要和N多个对象交流,就像对象间的战争,很混乱。这时,就需要加入一个中心,所有的类都和中心交流,中心说怎么 处理就怎么处理。
- 机场调度中心
- MVC框架
- 媒体网关
- 中介服务
- N个对象之间产生了相互的依赖关系(N>2)。
- 多个对象有依赖关系,但是依赖的行为尚不确定或者有发生改变的可能,在这种情况下一般建议采用中介者模式,降低变更引起的风险扩散。
- 产品开发。一个明显的例子就是MVC框架,把中介者模式应用到产品中,可以提升产品的性能和扩展性,但是对于项目开发就未必,因此项目时以交付投产为目标,而产品则是以稳定、高效、扩展为宗旨。
- Mediator Pattern(中介者模式)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)。
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator pattern)
- 中介者模式(Mediator pattern)
- 中介者模式 Mediator Pattern
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式(Mediator Pattern)
- 中介者模式 [Mediator Pattern]
- 中介者模式【Mediator Pattern】
- 中介者模式 | Mediator Pattern
- USB命令(请求)和USB描述符
- 在VMware中安装Ubuntu 16
- bootstrap实现垂直导航框架
- 【Android自定义View】仿Photoshop取色器ColorPicker(二)
- 【NOIP2017提高组A组模拟8.17】行程的交集
- 中介者模式(Mediator Pattern)。
- 获取工程中window上面的RootViewController
- JZOJ2017.08.12 C组
- 2017-08-17 SSM 环境搭建
- Redis主从自动切换
- singlenumber
- centos7下快速安装mysql
- mysql源码学习笔记:系统变量variables
- dubbo-服务消费端类图