• 十一个行为模式之中介者模式(Mediator Pattern)


    定义:
    用一个中介对象(中介者)来封装一系列的对象交互,使各个对象之间不需要显式地相互引用,从而降低耦合度,而且可以独立地改变他们之间的交互关系。

    解耦后:

    结构图:

    • Mediator:抽象中介者,定义了一个通用的接口,用于对应组件改变状态时和其它组件进行相互通信的接口。
    • ConcreteMediator:具体中介者,它持有了具体组件的引用,实现了抽象中介者定义的接口。主要负责协调各个组件相互调用关系,对不同的组件状态改变采取不同的策略。
    • Colleague:抽象同事类,定义了各个组件的公用方法,维持了一个抽象中介者的引用,子类可以通过该引用进行通信。
    • ConcreteColleague:具体同事类,实现了各自的业务方法和逻辑。当自己需要与其他同事进行通信时,直接通过中介者来通信,不需要关心通信方式和处理方式。

    两方面的职责

    • 结构上:中介者提供中转作用,各个同事之间不需要显式地相互引用,而是通过中介者来实现间接调用。
    • 行为上:中介者提供协调作用,封装了不同同事之间的调用关系,可以很方便地扩展这些调用关系从而达到不同的目的,而具体的同事无需感知调用关系的改变。

    新添组件
    当增加一个新的组件Lable,可以采用两种策略来更改现有系统:

    • 新添加一个组件Lable,并修改中介者代码:增加一个lable的引用,并修改调用关系。
    • 新增加一个组件Lable和一个子中介者SubMediator,子中介者覆盖父类的方法,并在中间加入Lable的相关业务逻辑。原有的组件和Mediator无需做修改,客户端只需更改中介者即可。

    优点:

    • 中介者简化了对象之间的交互,是原来复杂的网状引用关系变为容易理解,维护和扩展的星型结构。
    • 中介者将各个同事之间进行解耦,可以独立地使用每一个同事类,或者很方便地添加新的同事类,符合“开闭原则”。

    实例:

    MediatorPattern.java

  • 相关阅读:
    POJ 2104 K-th Number(主席树模板题)
    HDU 6072 Logical Chain(Kosaraju+bitset)
    POJ 2728 Desert King(最优比率生成树 01分数规划)
    HDU 6150 Vertex Cover(构造)
    51nod 1693 水群(神奇的最短路!)
    51nod 1444 破坏道路(最短路)
    51nod 1076 2条不相交的路径(边双连通分量)
    HDU 6156 Palindrome Function
    Cortex-M0(+)内核的处理器架构简介
    [转] 软件开发流程
  • 原文地址:https://www.cnblogs.com/zhangfei614/p/6082370.html
Copyright © 2020-2023  润新知