意图

 

当多个对象为了同一个目的需要相互协作时,指定一个中介对象作为业务的中枢,以降低各个对象之间的耦合程度。

 

动机

 

面向对象设计的一个重要原则就是高内聚,低耦合。因此在设计一个软件时,总是希望将系统的功能进行分解然后分配给不同的参与者类。这种方式对于软件功能中可以复用的那部分没有任何问题,因为这有助于软件功能的复用化。但是对于软件功能中只适用于当前软件的那部分功能,如果非要强制性的分配到参与者类中的话,就会造成类数量的膨胀和类之间依赖程度的几何级数增长。

考虑下面的Word2016中的文字环绕属性设定对话框,用户在选择不同的环绕方式之后,下面的文字环绕方向和距离设定控件的有效无效会随之发生变化。

 

Aha!设计模式(89)-中介者模式(1)_设计模式

 

如果将让每个环绕方式控件管理其他控件动作的话,需要让每个环绕方式控件都要和其他控件之间建立通知渠道。可以想象这是多么复杂的一个网络。

 

几乎所有的应用开发都会遇到这样的问题,也就是说当我们将可以共通的功能越来越集中到可复用的类之后,总是要有人来承担那些不可复用的部分。而那些不可复用的部分往往就是应用特有的内容,这部分内容处于业务的中心,利用可复用类的功能,协调可复用类的行为。处理这部分功能的类就是中介者类。

 

觉得本文有帮助?请分享给更多人。

阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】