中介者模式详解
- 作者: 刘杰
- 来源: 技术那些事
- 阅读:201
- 发布: 2025-06-19 12:26
- 最后更新: 2025-06-19 12:26
概述
中介者模式(Mediator Pattern)是一种设计模式,旨在通过引入一个中介对象来封装一系列对象的交互,从而降低这些对象之间的耦合度。这种模式有助于维护和修改,因为它将复杂的网状结构关系转换为星型结构关系。
中介者模式的主要优点包括:
- 降低类之间的耦合度,使得代码易于维护和复用。
- 将一对多关系转变为一对一关系,提高系统的灵活性和可维护性。
- 符合迪米特法则,即一个对象应尽可能少地了解其他对象。
常见使用场景:
- IM 即时通讯,用户之间的联系,都是都过服务端这个中介者,由服务端将消息推送给指定的用户。
- GUI 各个组件,功能单一的为基础组件,多个基础组件组合而成自定义组件。基础组件相当于 colleague,自定义组件相当于中介者,每生成一个新中介者,可以重新定义组件之间的交互行为。
- 房产中介,买卖双方的中介者。
类图
classDiagram
direction LR
ConcreteMedia --|> AbstractMedia
ComponentA --|> AbstractColleague
ComponentB --|> AbstractColleague
ComponentC --|> AbstractColleague
AbstractMedia --> ComponentA
AbstractMedia --> ComponentB
AbstractMedia --> ComponentC
class AbstractMedia {
- ComponentA a;
- ComponentB b;
- ComponentC c;
+ notify(string message);
}
class ConcreteMedia {
+ notify(string message);
}
class AbstractColleague {
# AbstractMedia media;
}
class ComponentA {
+ actionA();
}
class ComponentB {
+ actionB();
}
class ComponentC {
+ actionC();
}
注意:组件只要实现抽象同事类,包含抽象中介者就可以。各个组件不必具有同一的行为接口。每个具体的中介者实例,相当于将相关的组件之间的交互逻辑进行了封装,不同的逻辑有不同的中介者实现。