介绍
也叫调节者模式或者调停者模式。
调停者 :父母打架,你或者爷爷奶奶可以充当调停者;
中介(Mediator) :买房的时候,通过房屋中介买房;
中介者或者调停者需要协调的也就是两种对象,但是中介者模式要协调的是多类对象。
最接近的例子,研发公司,有运维,产品,开发,设计,还有测试。有一个不属于各个部门的中间人进行协调各部门之间的问题做出决定。
使用场景
当对象之间的交互操作很多并且每个对象的行为操作都相互依赖彼此的时候,为防止在修改一个对象的行为的时候,同时涉及修改很多其他对象的行为,可采用中介者模式,来解决紧耦合问题。该模式将对象之间的多对多的关系变成一对多的关系,中介者对象将系统从网状结构变成以调停者为中心的星型结构,达到降低系统的复杂性,提高可扩展性的作用。
角色
抽象中介者,定义了同事到中介者对象的接口,一般以抽象类的方式实现
具体中介者,继承自抽象中介者,实现了父类定义的方法,他从具体的同事对象接收消息,想具体的同事对象发送消息
抽象同事,定义了中介者对象的接口,他只知道中介者而不知道其他的tongshi
具体同事,继承自抽象同事,每个具体同事都知道自己在小范围内的行为,而不知道在大范围内的目的。
简单实现
电脑是中介者模式的简单例子,主板负责协调CPU,显卡,内存等的通信,任何部分的通信,都要经过主板去协调。以读取光盘为例子。
抽象的中介者
主板中介者
抽象同事
CPU同事
光驱同事
显卡同事
声卡同事
客户类
从上面的程序可以看出,中介者模式就是用来协调各个对象之间的交互的。如果没有主板的话,每一个零部件都要其他的零部件建立联系,这样就会形成一个错综复杂的网状图,而中介者模式则是将这种错综复杂的网状图变成一个结构清晰地星型图,其中心就是中介者。