Mediator(中介者)-对象行为型模式
2016-07-24 15:46
316 查看
1.意图
用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2.动机
通过将集体行为封装在一个单独的中介者对象中,中介者负责控制和协调一组对象间的交互。中介者充当一个中介以使组中的对象不再相互显示引用。这些对象只知道中介者,从而减少了相互连接的数目。
3.适用性
一组对象定义良好,但是以复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
一个对象引用其它很多对象并且直接与这些对象通信,导致难以复用该对象。
想定制一个分布在多个类中的行为,而又不想生成太多的子类。
4.结构
5.效果
减少了子类的生成,Mediator将原本分布于多个对象间的行为集中在一起。改变这些行为只需生成Mediator的子类即可。这样各个Colleague类可被重用。
将个Colleague解耦, Mediator有利于各Colleague间的松耦合,可以独立的改变和重用各Mediator类和Colleague类。
简化了对象协议,用Mediator和各Colleague间的一对多的交互来替代多对多的交互。一对多的关系更易于理解,维护和扩展。
它对对对象如何协作进行了抽象,将中接者作为一个独立的概念并将其封装在一个对象中,使你将注意力从对象各自本身的行为转移到它们之间的交互上来。这有助于弄清楚一个系统中的对象是如何交互的。
它使控制集中化,中介者模式将交互的复杂性变为中介者的复杂性。因为中介者封装了协议,它可能比任何一个Colleague都复杂。这可能使中介者自身成为一个难于维护的庞然大物。
用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显示地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2.动机
通过将集体行为封装在一个单独的中介者对象中,中介者负责控制和协调一组对象间的交互。中介者充当一个中介以使组中的对象不再相互显示引用。这些对象只知道中介者,从而减少了相互连接的数目。
3.适用性
一组对象定义良好,但是以复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
一个对象引用其它很多对象并且直接与这些对象通信,导致难以复用该对象。
想定制一个分布在多个类中的行为,而又不想生成太多的子类。
4.结构
5.效果
减少了子类的生成,Mediator将原本分布于多个对象间的行为集中在一起。改变这些行为只需生成Mediator的子类即可。这样各个Colleague类可被重用。
将个Colleague解耦, Mediator有利于各Colleague间的松耦合,可以独立的改变和重用各Mediator类和Colleague类。
简化了对象协议,用Mediator和各Colleague间的一对多的交互来替代多对多的交互。一对多的关系更易于理解,维护和扩展。
它对对对象如何协作进行了抽象,将中接者作为一个独立的概念并将其封装在一个对象中,使你将注意力从对象各自本身的行为转移到它们之间的交互上来。这有助于弄清楚一个系统中的对象是如何交互的。
它使控制集中化,中介者模式将交互的复杂性变为中介者的复杂性。因为中介者封装了协议,它可能比任何一个Colleague都复杂。这可能使中介者自身成为一个难于维护的庞然大物。
相关文章推荐
- Recv-Q&Send-Q
- 线程与进程的区别
- 355. Design Twitter
- 基于Clang的Source to Source源代码转换(一)
- [算法学习笔记]又一个采用分治法的排序算法----快速排序算法
- 使用System.arraycopy()实现数组之间的复制
- 进程相关知识点
- JAVA面向对象-----局部内部类
- JAVA面向对象-----局部内部类
- 动画经验总结
- EL表达式/ JSTL标准标签库
- 浏览器中调试web你知道吗?
- 三剑客实例精选
- 不可思议、违反直觉
- Spring Transaction 源码
- Android Actitity的生命周期
- HDU 1867 A + B for you again kmp算法
- 链表实现冒泡排序
- 栈区和堆区内存分配的区别
- linux多线程的使用