GOF23设计模式之中介者模式的实现
2015-04-12 10:56
896 查看
/** * 时间:2015年4月12日09:57:11 * 抽象中介类,定义了同事对象到中介者对象的接口 * */ package com.bjsxt.cn.mediator;
public interface Mediator { public void register(String dname, Deparment d); public void command(String dname); }
/** * 时间:2015年4月12日09:59:50 * 抽象同事类:抽象出所有部门的共同之处。 * */package com.bjsxt.cn.mediator;
public interface Deparment { public void selfAction(); public void outAction();}
/** * 时间:2015年4月12日10:03:03 * 具体同事类,实现了抽象同时类,便于组织和管理 */package com.bjsxt.cn.mediator;
public class Developement implements Deparment { private Mediator m;//所有部门都和中介打交道(在这里指的是总经理) /** * 在具体同事对象的构造器中传入中介者 * @param m 中介者 */ public Developement(Mediator m) { super(); this.m = m; m.register("development", this); }
@Override public void selfAction() { System.out.println("专心科研,努力研发创新的产品。"); }
@Override public void outAction() { System.out.println("我研发部同仁为你提供技术。"); m.command("financial"); }
}
/** * 时间:2015年4月12日10:08:24 * 具体同事对象:需要有一个中介者对象进行交互 */package com.bjsxt.cn.mediator;
public class Financial implements Deparment {
private Mediator m; public Financial(Mediator m) { super(); this.m = m; m.register("financial", this); }
@Override public void selfAction() { System.out.println("妈哒,lz天天数钱,不知道怎么花。"); }
@Override public void outAction() { System.out.println("财务部拨款到位,好好干,兄弟们"); System.out.println("我大财务部提供支持,愿竭诚为你服务。"); }
}
/** * 时间:2015年4月12日10:12:49 * 具体同事对象:市场部 */package com.bjsxt.cn.mediator;
public class Market implements Deparment {
private Mediator m; public Market(Mediator m) { super(); this.m = m; m.register("market", this); }
@Override public void selfAction() { System.out.println("我市场部调研市场,选定要生产的产品"); }
@Override public void outAction() { System.out.println("已经定好创新产品,需要研发部提供技术,财务部提供资金"); m.command("development"); }
}
/** * 时间:2015年4月12日10:24:01 * 具体中介类:实现抽象类的方法,它需要知道所有具体同事类,并从具体同事接受消息,向具体对象发出命令 */package com.bjsxt.cn.mediator;
import java.util.HashMap;import java.util.Map;
public class President implements Mediator {
private Map<String, Deparment> map = new HashMap<String, Deparment>(); @Override public void register(String dname, Deparment d) { map.put(dname, d); }
@Override public void command(String dname) { map.get(dname).selfAction(); map.get(dname).outAction(); }
}
/** * 测试程序 * 时间:2015年4月12日10:23:26 * */package com.bjsxt.cn.mediator;
public class Client { public static void main(String[] args) { Mediator mediator = new President(); Financial fin = new Financial(mediator); Market market = new Market(mediator); Developement dep = new Developement(mediator); market.selfAction(); market.outAction(); }}
/*我市场部调研市场,选定要生产的产品已经定好创新产品,需要研发部提供技术,财务部提供资金专心科研,努力研发创新的产品。我研发部同仁为你提供技术。妈哒,lz天天数钱,不知道怎么花。财务部拨款到位,好好干,兄弟们我大财务部提供支持,愿竭诚为你服务。
* * */
相关文章推荐
- 【GOF23设计模式】_中介者模式_同事协作类_内部类实现JAVA245
- GOF23设计模式之享元模式的实现
- GOF23设计模式之模板方法模式(方法回调)的理解与实现之经典
- 设计模式GOF23之单例模式实现
- GOF23设计模式之责任链模式(chain of responsibility)之实现
- GOF23设计模式之原型模式之实现
- GOF23设计模式之外观模式不使用外观模式的实现
- 【GOF23设计模式】_命令模式_数据库事务机制底层架构实现_撤销和回复JAVA246
- GOF23设计模式之中介者模式的理解
- GOF23设计模式之策略模式与实现
- GOF23设计模式之状态模式的理解与实现
- GOF23设计模式之抽象工厂模式的实现
- 【GOF23设计模式】中介者模式
- GOF23设计模式之动态代理模式实现之经典
- GOF23设计模式之迭代器模式理解与实现
- GOF23设计模式之静态代理模式实现之经典
- 233_尚学堂_高淇_java300集最全视频教程_【GOF23设计模式】_原型模式_prototype_浅复制_深复制_反序列化实现深复制
- GOF23设计模式之 中介者模式Mediator
- 设计模式GOF23——中介者模式
- GOF23设计模式之组合模式之实现