名称:中介者

中介者设计模式用于开发一个对象,这个对象能够在类似对象互相之间不直接交互的情况下传送或调解对这些对象的集合的修改。

问题与解决方案:

当对象的耦合过于紧密时,面向对象编程的优点就会显现出来。虽然仍旧在处理对象,但是这种哦给你样式开始向程序化转换。基本代码变化整体化且较为笨重。在能够应用解决方案之前,我们需要深入研究这个特定的问题。理解根本的原因十分重要的。终结者设计模式解决的相同问题会缓慢的蔓延至具体代码的其他实例中。

基于终结者设计模式的对象在这些有关系但不耦合的对象之间提供了一个非常必要的通信中心。一个类似但是无关的对象会受到某个改变的影响,它会向中介者对象提及这个改变。通过将该改变应用于其他所有对象,中介者对象随后进行调解以促成这些对象能够接受该改变。最开始发生改变的对象并不知道有多少其他的对象也进行了相同的改变。除了应当应用改变之外,其他类似的对象并不知道更新的来源。

通过雇员和老板就可以阐明这种行为在现实生活中的实例。某位雇员决定在家自学一项新的综合技能。在学习新的综合技能时,他并未联系其他任何雇员。学习完成后,这位雇员向老板告知了自己所掌握的新技能。老板觉得这种做法很好,并且通告其他所有雇员都应当学习这项新技能。随后,其他雇员就按照自己的方式开始学习新的技能。

在源对象的改变应当被传递给其他有联系但不耦合的对象时,就应当使用基于中介者设计模式的对象管理这些更新。

UML:

Mediator

代码示例: