中介者模式

概述

设想表单组件联动的场景,若将表单组件实现为对象,且联动逻辑直接由这些对象通过方法实现的话,那样就会使这些对象有复杂的实现与关联。如果在表单组件之外制作一个中介者,表单组件的变更流入中介者,再由中介者更迭另一个表单组件的状态,如状态管理器或 form store 那般。

中介模式使用一个中介对象封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,且可以独立地改变它们之间的交互。因此,中介模式的适用场景为:一组对象有用复杂的通信关系。

结构

  • Mediator:中介者,定义一个用于与各同事对象 Colleague 通信的接口。
  • ConcreteMediator:具体中介者,通过协调各同事实现协作行为,它了解并维护各个同事。
  • Colleague:每一个同事类都知道它的中介者,它们通过中介者进行通信。

Colleague 和 Mediator 之间的通信机制既可以通过观察者模式实现,又可以由 Colleague 直接调用 Mediator 的接口。