中介模式定义
定义一个对象来封装一系列对象的交互,中介者模式使各个对象之间不需要相互引用,从而使得其松耦合,而且用户可以独立地改变他们之间的交互。
中介模式通用类图:
- Mediator抽象中介者角色:抽象中介者角色定义一个接口用于与各同事(Colleague)对象通信。
- Concrete Mediator具体中介者角色:通过协调各同事角色实现协作行为,因此他必须依赖各个同事角色。
- Colleague 同事角色:每一个同事角色都知道中介者角色,而且与其他同事角色通信的时候,一定通过中介者角色协作。
定义抽象中介者
1 | /** |
定义抽象Colleagure
1 | /** |
定义具体的同事类
1 | /** |
定义具体中介者
1 | /** |
测试main方法
1 | public class Main { |
优点
- 中介中模式简化了对象之间的相互交互,它用中介者和同事的一对多交互替代了原来同事类之间的多对多的交互,一对多关系更容易理解、维护和扩展,将原本难以理解的网状结构换成相对接单的星状结构。
- 可将各个同事类对象进行解耦。中介者有利于各同事之间的耦合,可以独立地改变和复用各个同事类和中介者。
- 可以减少子类的生成。
缺点
在具体中介中包含了大量的同事类之间的交互细节,可能会使具体中介者非常复杂,使得系统难以维护。
使用场景
- 系统中对象之间存在复杂的引用关系,系统结构混乱难以理解。
- 一个对象由于引用了其他很多对象并且直接和这戏对象进行通信,导致难以复用该对象。
本文代码GitHub
欢迎关注公众号: