设计模式之中介者模式

    中介者模式(Mediator Pattern,定义一个中介对象来封装系列对象之间的交互。中介者使各个对象不需要显示地相互引用,从而使其耦合性松散,而且可以独立地改变他们之间的交互。


    使用中介者模式的动机:

    面向对象设计鼓励将行为分布到各个对象中。这种分布可能会导致对相间有须有链接。在最坏的情况下,每个对象都知道其他所有对象。

    虽然将一个系统分割成许多对象通常可以增加可复用性,但是对相间相互链接的激增又会降低其可复用性。大量的相互链接使得一个对象似乎不太可能在没有其他对象的支持下工作--系统表现为一个不可分割的整体。而且,对系统的行为进行任何较大的改动都十分困难,因为行为被分布在许多对象中。结果是,你可能不得不定义很多子类以定制系统的行为。

具体而言,这三种情况下适合使用中介者模式:

1、对象间的交互虽定义明确但是非常复杂,导致一组对象彼此相互依赖而且难以理解

2、因为对象引用了许多其他对象并与其通讯,导致对象难以复用

3、想要定制一个分布在多个类中的逻辑或行为,又不想生成太多子类


    中介者模式实际应用:

1、有几个界面,需要通过按钮之类的一些操作进行相互跳转,一开始只有2个界面的时候相互写下跳转代码比较简单,但是随着项目的进行,界面越来越多,界面逻辑越来越复杂,你会发现各个界面之间关系越来越复杂,容易出错而且不方便修改,这个时候就需要召唤中介者出现了,实现一个中介类来管理各个界面之间的交互,所有界面都通过中介者类交互。每次需要修改的时候一般只需要在中介者类修改就行。

2、几个对象之间需要进行数据交互,传来传去的比较乱,这个时候,创建一个中介者类来管理对象之间的数据交互就比较方便。

     

    中介者模式的优缺点:

优点:减少了子类的生成。把对象协议从多对多简化到一对多,使得各个对象松耦合。控制集中化,使得系统的交互更清晰

缺点:因为中介者模式将交互的复杂性变为了中介者的复杂性,有可能最终使得中介者自身变得庞大而且难以维护。在这种情况下,就需要考虑用其他设计模式来配合解决问题。


原文地址:https://www.cnblogs.com/secbook/p/2655384.html