Android知识Android开发经验谈Android开发

设计模式-中介者模式(Mediator)

2017-07-31  本文已影响77人  小菜_charry

中介者模式(Mediator)

用一个中介对象来封装一系列对象的交互,中介者使各对象不需要显式地互相调用,而是通过中介者。达到解耦及独立变化(只影响到中介者)。
也叫:调停者模式

中介者模式.png

优缺点:

应用场景

适用于存在一系列类似功能的组件,而组件不能过多。例如:

没有联合国之前.png 有了联合国后.png

中介者模式实现

中介者模式.png 调用流程.png 目录结构.png
public abstract class Mediator {
    public abstract void expressDeclare(String msg, Country countrt);
}
public abstract class Country {

    protected Mediator mediator;

    public Country(Mediator m) {
        this.mediator = m;
    }

    public abstract void makeDeclere();
    public abstract void express(String msg);

}
public class ConcreteMediator extends Mediator {

    public USA usa;
    public Iraq iraq;

    @Override
    public void expressDeclare(String msg, Country country) {
        if (country == this.usa) {
            usa.express(msg);
        } else if (country == this.iraq) {
            iraq.express(msg);
        }
    }

}
public class Iraq extends Country {

    public Iraq(Mediator m) {
        super(m);
    }

    @Override
    public void makeDeclere() {
        mediator.expressDeclare("我不随便搞事情", this);
    }
    
    @Override
    public void express(String msg) {
        System.out.println(msg);
    }

}
public class USA extends Country {

    public USA(Mediator m) {
        super(m);
    }

    @Override
    public void makeDeclere() {
        mediator.expressDeclare("我是老大,随便你怎么搞", this);
    }

    @Override
    public void express(String msg) {
        System.out.println(msg);
    }

}
public class Client {

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

        Iraq iraq = new Iraq(mediator);
        USA usa = new USA(mediator);

        mediator.iraq = iraq;
        mediator.usa = usa;

        iraq.makeDeclere();
        usa.makeDeclere();


    }

}

参考:

上一篇下一篇

猜你喜欢

热点阅读