设计模式之Mediator模式(笔记)

原创 2015年07月07日 09:42:59

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式的相互引用,从而使其耦合松散,而且可以独立的改变它们之间的交互。
使用场合:中介者模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,以及想定制一个分布在多个类中的行为,而不是想生成太多的子类的场合。

这里写图片描述

首先定义一个中介者接口IMediator

public interface IMediator {

    public void send(String message,Colleague colleague);
}

接着定义抽象同事类Colleague

public abstract class Colleague {

    protected IMediator mediator;

    public Colleague(IMediator mediator){
        this.mediator=mediator;
    }
}

接着定义具体的同事类继承Colleague 抽象同事类

public class ConcreteColleague1 extends Colleague{

    public ConcreteColleague1(IMediator mediator) {
        super(mediator);

    }

    public void send(String message){
        mediator.send(message, this);
    }

    public void notify(String message){
        System.out.println("同事1获得消息:"+message);
    }
}


public class ConcreteColleague2 extends Colleague{

    public ConcreteColleague2(IMediator mediator) {
        super(mediator);

    }

    public void send(String message){
        mediator.send(message, this);
    }

    public void notify(String message){
        System.out.println("同事2获得消息:"+message);
    }
}

然后定义一个具体的中介者对象ConcreteMediator继承IMediator

public class ConcreteMediator implements IMediator{

    private ConcreteColleague1 colleague1;
    private ConcreteColleague2 colleague2;

    public void setColleague1(ConcreteColleague1 colleague1){
        this.colleague1=colleague1;
    }

    public ConcreteColleague1 getColleague1(){
        return colleague1;
    }

    public void setColleague2(ConcreteColleague2 colleague2){
        this.colleague2=colleague2;
    }

    public ConcreteColleague2 getColleague2(){
        return colleague2;
    }

    @Override
    public void send(String message, Colleague colleague) {

        if(colleague==colleague1){
            colleague2.notify(message);
        }
        else{
            colleague1.notify(message);
        }       
    }
}

客户端代码

public static void main(String[] args) {
 //中间者模式
ConcreteMediator mediator=new ConcreteMediator();
ConcreteColleague1 colleague1=new ConcreteColleague1(mediator);
ConcreteColleague2 colleague2=new ConcreteColleague2(mediator);

mediator.setColleague1(colleague1);
mediator.setColleague2(colleague2);

colleague1.send("你好,中国");
colleague2.send("你好,美国");
}

我所理解的设计模式(C++实现)——中介者模式(Mediator Pattern)

假设我们开发一个图片处理软件,里面肯定包括很多相关功能,比如说剪切,旋转,滤镜,美化等等,而我们这些功能所要处理的对象是固定的,就是我们所显示的那张图片。但是我们不能把所有的功能罗列到一个tab上,虽...
  • LCL_data
  • LCL_data
  • 2013年07月27日 14:15
  • 6676

设计模式之中介者模式---Mediator Pattern

模式的定义中介者模式定义如下:Define an object that encapsulates how a set of objects interact.Mediator promotes lo...
  • hfreeman2008
  • hfreeman2008
  • 2016年08月09日 09:22
  • 839

《Java设计模式》之调停者模式(Mediator)

调停者模式是对象的行为模式。调停者模式包装了一系列对象相互作用的方式,使得这些对象不必相互明显引用。从而使它们可以较松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些...
  • u011225629
  • u011225629
  • 2015年08月17日 10:52
  • 1644

大话设计模式 读书笔记

大话设计模式 读书笔记 着重从c#代码角度分析 学习心得: 学设计模式,不需要是否能立刻理解和记忆,无需着力首先是UML图 再从设计模式到UML图 从UML图到代码 其次知道各种模式的应用场景即可...
  • jiangdmdr
  • jiangdmdr
  • 2017年03月01日 18:50
  • 326

Facade与Mediator模式的区别

http://www.cnblogs.com/sweetdream/archive/2005/12/19/299983.html 门面(Facade)模式和中介者(Mediator)模式有着...
  • caolaosanahnu
  • caolaosanahnu
  • 2014年02月21日 23:27
  • 1172

浅谈JAVA设计模式之——中介者模式(Mediator)

一、概述 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 二、适用性 1.一组对象以定义良好但是复杂的方式进行通信。产生...
  • l1028386804
  • l1028386804
  • 2015年05月09日 12:43
  • 1555

设计模式笔记-Mediator

中介者模式:用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。这个定义说白了,两个对象要交互(或者说通信,随便怎么说吧),直...
  • zhangjun03402
  • zhangjun03402
  • 2016年06月02日 16:32
  • 163

Java设计模式之初学者笔记——设计模式基础讲解

设计模式基础讲解
  • u012817635
  • u012817635
  • 2016年04月06日 20:11
  • 3313

《javascript设计模式与开发实践》阅读笔记(三)

this,call和apply2.1 thisthis指针的用法,相信在很多场合都看到过,这里也总结了几点: 作为对象的方法调用 作为普通函数调用 构造器调用 Function.prototype.c...
  • sinat_25127047
  • sinat_25127047
  • 2016年11月03日 11:41
  • 396

23种设计模式UML图and简例

在这里23种经典设计模式UML类图汇总 创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳...
  • wodengniya_
  • wodengniya_
  • 2014年03月08日 21:00
  • 1797
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:设计模式之Mediator模式(笔记)
举报原因:
原因补充:

(最多只允许输入30个字)