/**
* 时间: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天天数钱,不知道怎么花。
财务部拨款到位,好好干,兄弟们
我大财务部提供支持,愿竭诚为你服务。
*
*
*/
原文地址:http://blog.csdn.net/lk142500/article/details/45008307