中介者模式
1 概念
1 定义
定义一个封装一组对象如何交互的对象
类型:行为型
2 应用场景
- 对象之间有复杂的通信关系:当对象之间的通信关系变得复杂时,使用中介者模式可以简化对象之间的交互,将复杂的通信逻辑转移到中介者中进行管理。
- 对象之间的耦合度较高:当对象之间的耦合度较高,彼此之间的依赖关系较为复杂时,可以使用中介者模式来解耦对象之间的关系,减少对象之间的直接依赖。
- 一对多的关系:中介者模式适用于一对多的关系,当一个对象需要与多个其他对象进行通信时,可以引入中介者来简化对象之间的通信。
- 分布式系统:中介者模式在分布式系统中也有应用。例如,分布式系统中的消息中间件可以看作是中介者,负责协调不同组件或服务之间的通信和数据交换。
3 优缺点
优点:
- 解耦对象之间的关系:中介者模式通过将对象之间的通信集中在中介者对象中,将对象之间的直接耦合转换为对象与中介者的耦合。这样一来,对象之间的关系变得松散,可以独立地改变和复用对象和中介者。
- 简化对象协议:中介者模式可以简化对象之间的协议。对象只需要与中介者进行通信,不需要了解其他对象的具体实现细节,从而降低了对象之间的复杂性。
- 可扩展性和维护性:由于中介者模式将对象之间的通信集中管理,当系统需要增加新的对象时,只需与中介者进行交互即可,无需修改现有对象之间的通信逻辑。这提高了系统的可扩展性和维护性。
缺点:
- 中介者复杂化:随着系统中对象之间通信关系的增加,中介者对象可能变得复杂。它需要处理和管理多个对象之间的交互逻辑,可能会导致中介者本身的复杂性增加。
- 单点故障:中介者模式将对象之间的通信集中在中介者对象中,如果中介者对象出现问题或失败,可能会影响整个系统的正常运行。中介者的故障可能会导致通信链路中的所有对象无法正常通信。
- 违背单一职责原则:中介者模式可能导致中介者对象承担过多的责任。中介者需要了解和管理多个对象之间的通信关系,可能违背了单一职责原则,使得中介者对象变得庞大和复杂。
- 增加系统复杂性:引入中介者模式会增加系统中的额外类和对象,从而增加系统的复杂性。
- 通信效率降低:中介者模式可能导致通信效率降低。当系统中的对象需要频繁地进行通信时,由于通信都需要通过中介者进行转发,可能会导致通信的延迟增加。
2 代码实现
场景:
用户通过QQ群来进行聊天而不是直接面对面聊
1 |
|
1 |
|
1 |
|
输出:
Wed Oct 04 21:43:12 CST 2023 [Geely] : Hey! Tom! Let’s learn Design Pattern
Wed Oct 04 21:43:12 CST 2023 [Tom] : OK! Geely