首页 > 代码库 > 设计模式—中介者模式
设计模式—中介者模式
中介者模式:为了减小各个对象的直接接触,引入中介对象来对各个对象之间的复杂操作进行处理。
就像卖方中介一样的。帮助维护租客和房东之间的沟通。
示例说明:房屋买卖中介。卖房者和买房者都认识中介,但是买房者和卖房者是不认识的。
定义一个中介(单例实现)
package com.zpj.designMode.MediatorPattern;import java.util.ArrayList;import java.util.List;public class Mediator { List<Operator> opers = new ArrayList<Operator>(); public void addOperators(Operator oper) { opers.add(oper); } private static Mediator mediator = new Mediator(); private Mediator() { } public static Mediator getInstance() { return mediator; } public void sell(Operator oper, int price) { System.out.println("---------出售:" + price + "$"); for (int i = 0; i < opers.size(); i++) { Operator op = opers.get(i); if (oper != op) { if (op.topPrice > price) { op.buy(); } } } }}
定义一个炒房者抽象类Operator
package com.zpj.designMode.MediatorPattern;public abstract class Operator { protected Mediator mediator = Mediator.getInstance(); protected int topPrice = 0; public Operator(int topPrice) { super(); this.topPrice = topPrice; } public abstract void sell(int price); public abstract void buy();}
添加两个炒房者实例:
package com.zpj.designMode.MediatorPattern;public class Operator01 extends Operator { public Operator01(int basePrice) { super(basePrice); } @Override public void sell(int price) { mediator.sell(this, price); } @Override public void buy() { System.out.println("Operator01-----------我买!"); }}package com.zpj.designMode.MediatorPattern;public class Operator02 extends Operator { public Operator02(int basePrice) { super(basePrice); } @Override public void sell(int price) { mediator.sell(this,price); } @Override public void buy() { System.out.println("Operator02-----------我买!"); }}
使用示例:
package com.zpj.designMode.MediatorPattern;import org.junit.Test;public class TestUnit { @Test public void test01() { Mediator mediator = Mediator.getInstance(); Operator op01 = new Operator01(12); Operator op02 = new Operator02(20); mediator.addOperators(op01); mediator.addOperators(op02); // 02卖方 op02.sell(1); }}
需要注意的是,operator可以互相不认识,但是Mediator 和每个operator之间是认识的。
----------------------
设计模式—中介者模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。