(17)行为型模式——中介

行为型模式——中介(Mediator)

问题背景

当需要降低多个子系统之间的耦合度时,考虑使用中介。在模块化开发中,多个模块(子系统)需要相互协作完成任务。因此,我们虽然强调要尽量降低模块间的耦合度,但完全没有耦合的系统也是毫无意义的。假设有N个子系统,它们两两之间都需要进行通信。在不作任何设计的情况下,整个系统的复杂度是O(N2),也就是这样:
程序结构
在这种结构中,模块间直接进行通信,任意两个模块都是耦合的。这样做非常危险,任意一个模块发生剧变都会牵扯到其他所有模块。因此,我们要设计出一种低耦合的结构。

解决方案

为了避免模块间的直接通信,我们引入“中介”的概念。这个概念和现实中的中介是一样的,都是两者沟通的媒介。使用了中介后,A模块要与B模块通信,只需要告诉中介:我要给B模块发送一条XXX消息。如此一来,每个模块都只和中介耦合,系统的复杂度就降低到了O(N),也就是这样:
程序结构

效果

  1. 降低了子系统之间的耦合度。
  2. 为整个系统提供了一个中央枢纽,使系统的控制更加集中。

缺陷

由于一个中介负责了所有模块间的通信,所以中介对象一般情况下都会是个“大怪物”,这会造成中介对象本身难以维护。但中介降低了系统的整体复杂度,这点牺牲还是值得的。

相关模式

  1. 门面:为了进一步降低中介和每个子系统间的耦合,往往会让门面和中介通信。
  2. 观察者:中介可以用观察者实现。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值