`
BlogDown
  • 浏览: 223968 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

12种行为模式 之8 MEDIATOR 调停者模式

阅读更多

8、MEDIATOR

调停者模式:

没使用调停者模式 : 一个过度耦合的系统 : 网状结构



使用调停者模式 后 : 以调停者为 中心的星状结构




/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:24:28
* <p/>
* note: 调停者角色
*/
abstract public class Mediator {

    /**
     * 事件方法
     * @param c
     */
    public abstract void colleagueChanged(Colleague c);

}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:24:39
* <p/>
* note: 具体调停者角色
*/
public class ConcreteMediator extends Mediator {
    private Colleague1 colleague1;
    private Colleague2 colleague2;

    /**
     * 将所有同事 实例化
     */
    public void createConcreteMediator() {
        colleague1 = new Colleague1(this);
        colleague2 = new Colleague2(this);
    }

    /**
     * 事件方法
     * @param c
     */
    public void colleagueChanged(Colleague c ) {
        colleague1.action();
        colleague2.action();
    }

    public Colleague1 getColleague1() {
        return colleague1 ;
    }

    public Colleague2 getColleague2() {
        return colleague2 ;
    }
}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:24:50
* <p/>
* note: 抽象同事角色
*       每个同事对象 仅知道调停者
*       而不知道其他同事对象
*/
public abstract class Colleague {
    private Mediator mediator;

    public Colleague(Mediator m) {
        mediator = m;
    }

    /**
     * 当前同时对象发生变化时,通知调停者
     */
    public void change() {
        mediator.colleagueChanged(this);
    }

    /**
     * 行动方法,一个同事对象在得知其他同事对象有变化时
     * 会执行此方法
     */
    public abstract void action();

    public Mediator getMediator() {
        return mediator;
    }
}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:25:00
* <p/>
* note: 具体同事角色
*/
public class Colleague1 extends Colleague {
    public Colleague1(Mediator m) {
        super(m);
    }

    public void action() {
        System.out.println("This is an action from Colleague 1");
    }
}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:25:10
* <p/>
* note: 具体同事角色
*/
public class Colleague2 extends Colleague {
    public Colleague2(Mediator m) {
        super( m );
    }

    public void action() {
        System.out.println("This is an action from Colleague 2");
    }
}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:25:20
* <p/>
* note: 具体同事角色
*/
public class Colleague3 extends Colleague {
    public Colleague3(Mediator m) {
        super( m );
    }

    public void action() {
        System.out.println("This is an action from Colleague 3");
    }
}

/**
* User: liuwentao@wentao365.com
* Date: 2008-12-9 Time: 15:34:30
* <p/>
* note: 客户端角色
*/
public class Client {

    public static void main(String args[]) {
        ConcreteMediator mediator = new ConcreteMediator();
        mediator.createConcreteMediator();

        Colleague c1 = new Colleague1(mediator);
        Colleague c2 = new Colleague2(mediator);

        mediator.colleagueChanged(c1);
    }
}


分享到:
评论

相关推荐

    调停者模式

    调停者模式是一种行为设计模式,其核心在于通过引入一个中间对象或服务来管理多个对象之间的交互,从而降低系统的耦合度,提高系统的灵活性和可维护性。在Java设计模式中,调停者模式常被应用于多对象间的复杂通信...

    JAVA设计模式之调停者模式详解

    调停者模式是一种设计模式,属于对象的行为模式,其主要目的是降低对象之间的耦合度,使得对象之间的交互更加灵活且易于管理。在Java中,调停者模式通过引入一个中介对象,也就是调停者,来协调多个对象之间的交互,...

    Java中23种设计模式详解

    14. 调停者模式(Mediator) 调停者模式用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的内部表示。这种模式使得对象交互可以灵活地变化。 15. 备忘录模式(Memento) 备忘录模式在不破坏封装...

    python实现常用的23种设计模式:含源代码、详细文档说明

    一、创建型模式 1、工厂方法模式【Factory Method】 2、抽象工厂模式【Abstract Factory】 ...8、调停者模式【Mediator】 9、备忘录模式【Memento】 10、迭代器模式【Iterator】 11、解释器模式【Interpreter】

    C#设计模式之Mediator中介者模式解决程序员的七夕缘分问题示例

    Mediator模式也被称为调停者模式,它能够将对象之间的耦合度降低,从而提高系统的灵活性和可维护性。 在本文中,我们将使用C#语言来实现Mediator模式,以解决程序员的七夕缘分问题。该示例中,我们将创建三个主要类...

    C++面向对象23种设计模式实现源码DesignPattern.zip

    4. **调停者模式(Mediator Pattern)**:调停者模式用于降低多个对象之间的耦合度,通过一个中介对象协调它们之间的通信。18.调停者模式Mediator展示了如何通过一个仲裁者类来处理对象间的交互,避免对象之间直接...

    C#23种设计模式_示例源代码及PDF

    调停者模式: 调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显 调停者模式 作用。 从而使他们可以松散偶合。 当某些对象之间的作用发生改变时, 不会立即影响其他 的 一些对象之间的作用。 ...

    PHP设计模式之中介者模式(Mediator Pattern)入门与应用案例详解

    咱们先来看下中介者模式(Mediator Pattern)的定义,它就是,用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互,这种模式又称为调停...

    设计模式精解-23种设计模式解析

    - **定义**: 调停者模式是一种行为型设计模式,它用一个中介对象来封装一系列的对象交互。 - **目的**: 降低对象间的耦合。 - **优点**: - 降低耦合度。 - 可以很容易地改变调停者的交互。 - **应用场景**: 当一组...

    c++设计模式-行为型模式-中介者模式

    c++设计模式-行为型模式-中介者模式;qt工程;c++简单源码; 中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式...

    JAVA 23种设计模式

    14. 调停者模式(Mediator):通过中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):在不破坏封装的前提下,保存对象的状态,以便后续恢复。 16. 观察者模式(Observer):定义...

    设计模式简介

    行为型模式包括十一中设计模式:模板方法模式(TemplateMethod)、观察者模式(Observer)、状态模式(State)、策略模式(Strategy)、职责链模式(ChainofResponsibility)、命令模式(Command)、访问者模式...

    java的23种设计模式

    14. **调停者模式**(Mediator) - **模式名称**:调停者模式 - **问题**:多个对象之间的交互过于复杂。 - **解决方案**:引入一个中介对象来协调这些对象之间的交互。 - **效果**:降低了对象之间的耦合度,...

    Java课堂:Java开发下的设计模式简单说明

    14. 调停者模式(Mediator):调停者模式通过一个中介对象协调多个对象之间的交互,降低对象间的耦合度。 15. 备忘录模式(Memento):备忘录模式用于在不破坏封装的前提下,保存对象的状态,以便在需要时恢复。 ...

    Delphi 深度探索(第二版)〖含随书光盘源代码〗

    6.3.9 调停者模式(mediator模式) 6.3.10 状态模式(state模式) 第7章 工具篇 7.1 极限编程的集成测试工具-dunit 7.2 性能分析工具gpprofile 7.3 内存泄漏清道夫--memproof 7. 4 codesite应用指南

    设计模式总结笔记设计模式总结笔记

    调停者模式(Mediator)** - **定义**:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 - **用途**:用于协调多个对象的行为...

    23种设计模式的java实现

    #### 调停者模式(Mediator) - **问题**:如何降低多个对象之间的通信复杂度? - **解决方案**:使用一个中介对象封装对象间的交互。 - **效果**:降低了对象之间的耦合度,提高了系统的可维护性。 #### 备忘录...

Global site tag (gtag.js) - Google Analytics