设计模式学习篇-mediator中介者模式

中介者模式 :用一个中介对象来封装一系列的对象交互,中介者使得对象不需要显示的引用,从而使其松耦合,而且可以独立的改变他们的交互。

中介者模式本质:封装交互 。

如果一组对象之间的通信方式比较复杂,导致相互依赖,结构混乱;如果一个对象引用了很多对象,并直接与这些对象进行交互,导致难以复用该对象。 可以采用中介者模式。

与外观模式相似:外观模式多用于封装一个子系统内部的多个模块,目的是向子系统外部提供简单的API。它封装的是子系统内部与外部系统间交互。而中介者模式提供的是多个平等的同事对象之间交互关系的封装。

举例:在一个公司里面,有很多部门、员工(我们统称他们互相为 Colleague “同事 ),为了完成一定的任务, “同事”之间肯定有许多需要互相配合、交流的过程 。如果由各个“同事”频繁地到处去与自己有关的“同事”沟通,这样肯定会形成一个多对多的杂乱的联系网络而造成工作效率低下。
 
此时就需要一位 专门的“中介者” 给各个“同事”分配任务,以及统一跟进大家的进度并在“同事”之间实时地进行交互, 保证“同事”之间必须的沟通交流 。很明显我们知道此时的“中介者”担任了沟通“同事”彼此之间的重要角色了,“中介者”使得每个“同事”都变成一对一的联系方式,减轻了每个“同事”的负担,增强工作效率。
 
大概理清上面简单例子中的意图之后,给出中介者模式适用场景:
1、 一组对象以定义良好但是复杂的方式进行通信。产生的相互依赖关系结构混乱且难以理解。
2、 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。
3、 想定制一个分布在多个类中的行为,而又不想生成太多的子类
类图附件:

猜你喜欢

转载自mojianpo.iteye.com/blog/1134483