Mediator pattern is used to reduce communication complexity between multiple objects or classes. This pattern provides a mediator class which normally handles all the communications between different classes and supports easy maintenance of the code by loose coupling. Mediator pattern falls under behavioral pattern category.
前言
中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式
基本介绍:
1) 中介者模式(Mediator Pattern ),用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互;
2) 中介者模式属于行为型模式,使代码易于维护;
3) 比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。
角色介绍:
1)抽象中介者(Mediator)角色:它是中介者的接口,提供了同事对象注册与转发同事对象信息的抽象方法;
2)具体中介者(ConcreteMediator)角色:实现中介者接口,定义一个 List 来管理同事对象,协调各个同事角色之间的交互关系,因此它依赖于同事角色;
3)抽象同事类(Colleague)角色:定义同事类的接口,保存中介者对象,提供同事对象交互的抽象方法,实现所有相互影响的同事类的公共功能;
4)具体同事类(Concrete Colleague)角色:是抽象同事类的实现者,当需要与其他同事对象交互时,由中介者对象负责后续的交互。
中介者模式-UML图:
代码:
1 | import java.util.HashMap; |
总结
中介者模式的注意事项和细节:
1) 多个类相互耦合,会形成网状结构, 使用中介者模式将网状结构分离为星型结构,进行解耦;
2) 减少类间依赖,降低了耦合,符合迪米特原则;
3) 中介者承担了较多的责任,一旦中介者出现了问题,整个系统就会受到影响;
4) 如果设计不当,中介者对象本身变得过于复杂,这点在实际使用时,要特别注意。
延伸
中介者模式(Mediator)
中介者模式-菜鸟教程
中介者模式简介及使用示例
Design Patterns - Mediator Pattern
尚硅谷Java设计模式,韩顺平图解java设计模式