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

问题描述

在一个系统中存在多个实体对象,这些实体对象之间存在交互关系。例如:实体A状态更新会导致实体B自动得到更新,并依据实体A的变化采取相应的动作。把实体对象之间的交互关心设计到每个实体对象中,会引入实体类之间的依赖关系,从而限制了实体类的可重用性。中介者模式引入一个单独的中介者对象来管理实体对象之间的交互关系。每个实体对象只和中介者对象交互,这保证了实体对象之间的独立性。

中介者模式

如图所示,中介者对象定义了StatusChanged()方法用于Colleague对象发布自己状态更新消息。ConcreteMediator对象了解所有它管理的Colleague对象,更知道这些Colleague对象之间的交互关系。例如ConcreteColleagueA对象逻辑调用StatusChanged()方法后,ConcreteMediator对象会调用ConcreteColleagueB对象的Adjust()方法来通知ConcreteColleagueB对象。由此可见,ConcreteMediator对象封装了ConcreteColleagueA & ConcreteColleagueB之间的交互关系,让这两个对象保持独立。这种方法提高了类ConcreteColleagueA & ConcreteColleagueB的可重用性,也让ConcreteMediator对象变得难于重用。中介者模式解除了对象间的交互依赖,也创造一个可能复杂的,不可重用的中介者对象。


讨论

中介者模式可以采用观察者模式来实现:把Colleague对象当做实体对象,Mediator对象当做观察者对象;一旦实体对象有任何状态更新,实体对象自动更新观察者对象。观察者对象再集中处理多个实体对象之间的交互关系。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值