中介者Mediator是一种对象行为型设计模式,目的是用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
在传统的面向对象设计过程中,通常将行为分布到各个对象中以增强可复用性,但随之也增加了对象间的相互连接,如果相互连接过多,使得一个对象似乎不太可能在没有其他对象的支持下工作,整个系统表现为一个不可分割的整体,导致对系统的行为进行任何较大的改动都十分困难,可能不得不定义很多子类以定制系统行为,结果系统越来越冗长而复杂。使用中介者模式可以避免这个问题,将集体行为封装在一个单独的中介者对象中,负责控制和协调一组对象间的交互。中介者充当一个中介以使组中对象不再相互显式引用,这些对象仅知道中介者,从而减少了相互连接的数目。
中介者模式的结构如下图所示:
上图中,Mediator中介者定义一个接口用于与各同事Colleague对象通信;ConcreteMediator具体中介者通过协调各同事对象实现协作行为,了解并维护它的各个同事;Colleague各同事类都知道它的中介者对象,在需要与其它同事通信的时候,与它的中介者通信。各同事向一个中介者对象发送和接受请求,中介者在各同事间适当地转发请求以实现协作行为。