中介者模式(Mediator Pattern)

参考文章:

https://www.cnblogs.com/ysw-go/p/5413958.html

 

定义:

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

 

uml类图:

 

模式组成:

 

  • Mediator:中介者。定义一个接口用于与各同事(Colleague)对象通信
  • ConcreteMediator:具体中介者。通过协调各同事对象实现协作行为,了解并维护它的各个同事
  • Colleague:抽象同事类。主要扶着约束同事对象的类型,并实现一些具体同事类之间的公共功能
  • Colleagueclass:具体同事类。每个具体同事类都只需要知道自己的行为即可,但是他们都需要认识中介者

 

优点:

 

  • 松耦合

    中介者模式通过把多个同事对象之间的交互封装到中介对象里面,从而使得同时对象之间松散耦合,基本上可以做到互不依赖。这样一来,同时对象就可以独立的变化和复用,不再“牵一发动全身”

  • 集中控制交互

    多个同事对象的交互,被封装在中介者对象里面集中管理,使得这些交互行为发生变化的时候,只需要修改中介者就可以了。

  • 多对多变为一对多
    没有中介者模式的时候,同事对象之间的关系通常是多对多,引入中介者对象后,中介者和同事对象的关系通常变为双向的一对多,这会让对象的关系更容易理解和实现。

 

应用:

  • MVC模式(其中C,控制器就是一个中介者,M和V和它打交道)
  • 窗口游戏程序,窗口软件开发中窗口对象也是一个中介者对象

  • Java.lang.reflect.Method#invoke()

 

举个栗子:

 

posted @ 2017-12-14 14:19  情歌z  阅读(102)  评论(0编辑  收藏  举报