美文网首页
中介者模式

中介者模式

作者: _fan凡 | 来源:发表于2019-03-26 23:59 被阅读0次

    中介者模式定义如下:

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

    用一个中介对象封装一系列对象的交互,中介者促使各对象不需要显示的相互作用,并且你可以独立的改变他们之间的交互。

    在网络拓扑图中,有网状拓扑图和星状拓扑图,当类图之间的关系是网状图时,就建议采用中介者模式,是类图之间的关系改为星状图。

    中介者通用类图如下:


    8.png

    中介者模式涉及的三个角色如下:

    1、Mediator:抽象的中介者角色,定义统一的接口,用于各个Colleague之间的通信

    2、ConcreteMediator:具体中介者角色:具体的中介者角色实现Mediator的接口,完成各个同事类之间的通讯,因此他必须依赖于各个同事类。

    3、Colleague:同事角色,每个同事角色都知道中介者角色,而且与其他同事角色进行通信的时候一定要通过中介者角色。每个同事角色的行为(方法)分为两种:

    第一种:自己完成的事情,如果不依赖与其他同事类,只需要自己执行即可,可以称为自发行为,Self-Method
    
    第二种:需要依赖于其他同事,需要其他同事执行相应的方法才能完成的操作,可以称为依赖方法,Dep-Method
    

    相互依赖的注入方式:

    根据上面所述,中介者中会有同事类,同事类中也会包含中介者类,那么建议同事类中的中介者采用构造方法注入,而中介者中的同事类采用setter方法注入。这是因为同事类中必须有中介者,而中介者类中并不是包含所有的同事类。

    中介者模式的优点:

    中介者模式减少了类之间的依赖,把原有的类之间的多对多的依赖改为了多对一的依赖,降低了彼此间的耦合。

    中介者模式的缺点:

    由于将多个依赖都集中于中介者类中,所以随着同事类的增多,中介者类会急剧的膨胀。

    中介者模式使用场景:

    多个类之间相互依赖耦合,形成了网状结构,建议使用中介者模式,进行解耦,将依赖转移到一个类中。

    相关文章

      网友评论

          本文标题:中介者模式

          本文链接:https://www.haomeiwen.com/subject/kbnovqtx.html