GOF23设计模式之中介者模式的实现

来源:互联网 发布:淘宝助理修改宝贝描述 编辑:程序博客网 时间:2024/05/16 05:30

/** * 时间: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天天数钱,不知道怎么花。财务部拨款到位,好好干,兄弟们我大财务部提供支持,愿竭诚为你服务。
 *  * */

1 0
原创粉丝点击