Z

中介者模式(Mediator Pattern)

Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly,and it lets you vary their interaction independently.

在开发过程中也许会遇到多个角色之间互相有依赖,这个依赖关系就好像蜘蛛网一样。

对于这种情况,开发和维护比较麻烦,一个角色与其他几个都有交互,耦合性也很强。这时我们可以把各个角色中使用其他角色的依赖逻辑全部抽出到一个中介者模块中,将整个代码变为星形结构。

现在原角色中对于其他角色的依赖全都移到了中间的中介者中,由中介者执行原本分散在各个角则中混在的不同的依赖逻辑。也就是把原本的一对多的依赖变成了一对一的依赖,不同角色只依赖中介者,减少了依赖,降低了耦合。

由于中介者模式很好理解,就不写示例代码了。但使用中介者模式有几个问题需要注意:

  • 当原有的互相依赖的逻辑很多时,由于将他们抽到一个公共的中介者中,这可能会导致中介者变得很大很复杂。当互相依赖的代码越多,中介者就越复杂。
  • 不是所有相互依赖都要变成中介者模式,不同角色之间的依赖是很正常的,没有必要强行把他们变成中介者模式。