设计模式 - 中介者模式(Mediator)

Mediator模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
可以通过将集体行为封装在一个单独的中介者(mediator)对象中以避免这个问题。中介者负责控制和协调一组对象间的交互。中介者充当一个中介以使组中的对象不再相互显式引用。这些对象仅知道中介者, 从而减少了相互连接的数目。

类图:
这里写图片描述

Mediator模式使用双分派,具体的Mediator对象持有所有同事(Colleague)对象的引用,每个同事(Colleague)对象持有Mediator对象的引用。当一个同事(Colleague)对象发生变化,通知Mediator对象,Mediator对象根据谁发生变化,通知另外的同事(Colleague)对象。

  • 每一个同事类都知道它的中介者对象。
  • 每一同事对象需要与其他同事对象通信的时候,与中介者对象通信。
  • 中介者定义一个接口与每个同事对象通信。
  • 具体的中介者维护每个同事对象,协调各同事对象实现协作行为。

一种实现方法是使用Oberver模式,将Mediator实现为一个Oberver各Colleague作为Subject,一旦其状态改变就发送通知给Mediator。Mediator作出的响应是将状态改变的结果传播给其他的Colleague。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值