【设计模式学习笔记】中介者模式

中介者模式:用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。【菜鸟】

文章目录 

          1.1 交谈动作及对象

          1.2 中介者长这模样

          1.3 测试

         ​​​​​​​ 1.4 结果

         ​​​​​​​ 参考

从工厂模式开始我们工厂就一直在造车,今天终于,终于有人要买我们的车了!于是我们公司就开了和其他公司谈起来了。。。。 

1.1 交谈动作及对象 

首先定义一个说话动作的抽象类。客户和我们公司都要说话啊。

package mediation;

public abstract class Action {
    private String name;

    public String getName() {
        return name;
    }

    public Action(String name) {
        this.name = name;
    }

	public void saySomething(String words, Action... action){
        Mediator.execute(this, words, action);
	}
}

 我们公司及客户是这样,继承一下Action就好了

package mediation;

public class CarCompany extends Action{

	public CarCompany(String name) {
		super(name);
	}
}

1.2 中介者长这模样

package mediation;

public class Mediator {

	public static void execute(Action action, String words, Action... action2) {
	    StringBuffer cusNames = new StringBuffer();
	    for (Action act : action2){
	        cusNames.append(act.getName()+" ");
        }
	    String msg = "【"+action.getName() + "】 对【 "+cusNames.toString()+"】说:"+words;
	    System.out.println(msg);
	}
}

注意在抽象类中,我们的动作都经过中介者处理。

1.3 测试

package mediation;

public class Test {
	public static void main(String[] args) {
		Action com = new CarCompany("车厂");
		Action cusA = new Customer("客户A");
		Action cusB = new Customer("客户B");
		com.saySomething("我们的车质量好。", cusA,cusB);
		cusA.saySomething("好不好,跑一跑!", com);
        cusB.saySomething("我看这车行!", com);
        com.saySomething("88折卖你了,客户A不知道的。", cusB);
        cusB.saySomething("o了", com);
        cusA.saySomething("你们在说啥....(⊙_⊙)?", com,cusB);

    }
}

 1.4 结果

参考

【菜鸟教程】:http://www.runoob.com/design-pattern/mediator-pattern.html

本文原文地址:https://blog.csdn.net/baidu_30325009/article/details/85018875

猜你喜欢

转载自blog.csdn.net/Roger_CoderLife/article/details/86426002