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