1. 何为中介者模式
中介者模式:用一个对象来封装一系列对象的交互方式。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
中介者模式用于定义一个集中的场所,对象间的交互可以在一个中介者对象中处理。其他对象不必彼此交互,因此减少了他们之间的依赖关系。图1-1表示了中介者模式各个模块之间的关系:
抽象的Mediator定义了用于同Colleague交互的一般行为。典型的同事 (colleague)是以明确定义的方式进行相互通信的对象,并且彼此紧密依存。ConcreteMediator为ConcreteColleague定义了更加具体的行为,因此可以子类化Mediator,把各种Colleague交互算法应用到相同或不同的Colleague类型。如果应用程序只需要一个中介者,有时抽象的Mediator可以省略。
2. 何时使用中介者模式
以下情形,自然会考虑使用这一模式:
- 对象间的交互虽然定义明确然而非常复杂,导致一组对象彼此相互依赖而且难以理解;
- 因为对象引用了许多其他对象并与其通讯,导致对象难以复用;
- 想要定制一个分布在多个类中的逻辑或行为,又不想生成太多子类。