zoukankan      html  css  js  c++  java
  • 中介模式

    Mediator

    中介者模式:中介模式封装一系列的对象交互,集中管理相关对象之间复杂的沟通和交互。中介者使各对象不需要明显的相互引用,从而使其耦合松散,而且 可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用 或者依赖。

    中介模式
    中介模式

    中介模式


    Mediator:定义一个接口用于和各Colleague通信,其中主要的方法是一个或多个事件方法。

    Concrete Mediator:

    1. 继承Mediator,实现事件方法。

    2. Concrete Mediator知晓所有的具体Colleague,它从具体Colleague对象接收消息,向具体Colleague发出命令。

    Colleague:

    1. 每一个Colleague都知道它的Mediator,而不知道其他Colleague。

    2. 每一个Colleague与其他Colleague通信时,与它的Mediator通信。

     

    要点:

    1. Colleague向一个Mediator对象发送和接收请求。Mediator在各Colleague之间适当的转发请求以实现协作行为。

    2. Mediator常常用于协调相关的GUI组件。

    3. Colleague可以使用观察者模式与Mediator通信,Mediator收到通知后将状态改变的结果传播给其他的Colleague。

    4. 也可以在Mediator中定义一个特殊的通知接口,各Colleague在通信时直接调用该接口。当与Mediator通信时, Colleague可以将自身作为一个参数传递给Mediator,使其可以识别发送者。

    5. Façade为一个子系统提供一个简单的接口,其中消息的传送是单向的。Mediator则不同,它与Colleague对象的相互作用是多向的。

     

    适用性:

    1. GUI组件间的相互协调合作。

    2. Mediator使用的情形很少,使用时首先应谨慎判断是否自己在滥用模式。 

    优点:

    1. 避免Colleague对象之间的过度耦合,增加各Colleague和Mediator的复用性。

    2. Mediator将控制逻辑集中,简化了系统的维护(一对多代替多对多的交互)。

    缺点:

    如果设计不当,Mediator对象会相当复杂。

    作者:God bless you
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    了解web前端基本常识
    解决移动端输入法挡住输入框的办法
    简单实现根据选项显示不同的表单
    关于“使用本服务器,放到正规的第三方服务器就不安全”的想法
    简单实现网页换肤功能
    Java项目引入eclipse注意事项
    hexo博客发布注意事项
    hexo博客出现“Cannot GET/xxxx”的错误
    C#中ToString()格式详解
    SQLSERVER 时间日期函数,查询今天日期、昨天、一个星期、半年前的数据
  • 原文地址:https://www.cnblogs.com/luckForever/p/7254962.html
Copyright © 2011-2022 走看看