您的位置:首页 > 编程语言 > Go语言

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: