1. 定义
用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。
2. 适用场景
- 在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到一些需求的更改,这种直接的引用关系将面临不断的变化。
- 在这种情况下,我们可使用一个“中介对象” 来管理对象间的关联关系,避免相互交互的对象之间的紧相合引用关系,从而更好地抵御变化。
3. 要点总结
- 将多个对象间复杂的关联关系解耦, Mediator模式将多个对象间的控制逻辑进行集中管理,变“多个对象互相关联”为“多个对象和一个中介者关联” ,简化了系统的维护,抵御了可能的变化。
- 随着控制逻辑的复杂化, Mediator具体对象的实现可能相当复杂。这时候可以对Mediator对象进行分解处理。
- Façade模式是解辑系统间(单向)的对象关联关系; Mediator模式是解辑系统内各个对象之间(双向)的关联关系。
4. Demo
伪代码略。
本专栏文章:
- 01-C++面向对象设计原则
- 02-C++模式概述
- 03-模板方法(Template Method)
- 04-策略模式(Strategy)
- 05-观察者模式(Observer)
- 06-装饰模式(Decorator)
- 07-桥模式(Bridge)
- 08-工厂方法(Factory Method)
- 09-抽象工厂(Abstract Factory)
- 10-原型模式(Prototype)
- 11-构建器(Builder)
- 12-单件模式(Singleton)
- 13-享元模式(Flyweight)
- 14-门面模式(Façade)
- 15-代理模式(Proxy)
- 16-适配器(Adapter)
- 17-中介者(Mediator)
- 18-状态模式(State)
- 19-备忘录(Memento)
- 20-组合模式(Composite)
- 21-迭代器(Iterator)
- 22-职责链(Chain of Resposibility)
- 23-命令模式(Command)
- 24-访问器(Visitor)
- 25-解析器(Interpreter)
- 26-C++设计模式总结