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

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

问题背景

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

解决方案

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

效果

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

缺陷

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

相关模式

  1. 门面:为了进一步降低中介和每个子系统间的耦合,往往会让门面和中介通信。
  2. 观察者:中介可以用观察者实现。
发布了27 篇原创文章 · 获赞 41 · 访问量 2073

猜你喜欢

转载自blog.csdn.net/DIAX_/article/details/104261887