/**
* @Author: create_By: chenxin
* @Data:Created in 2018/9/7 16:01
* @Version:
* @Acton:
*/
public class President implements Mediator {
private Map<String,Department> map = new HashMap<>();
@Override
public void register(String dname, Department d) {
map.put(dname,d);
}
@Override
public void command(String name) {
map.get(name).selfAction();
}
}
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/9/7 13:54
* @Version:
* @Acton: 研发部
*/
public class Development implements Department {
private Mediator mediator; //持有中介者的引用
public Development(Mediator mediator) {
this.mediator = mediator;
mediator.register("developent",this);
}
@Override
public void selfAction() {
System.out.println("专业搞技术 ");
}
@Override
public void outAction() {
System.out.println("向财务要钱");
}
}
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/9/7 13:54
* @Version:
* @Acton: 财务部
*/
public class Finacial implements Department {
private Mediator mediator; //持有中介者的引用
public Finacial(Mediator mediator) {
this.mediator = mediator;
mediator.register("finacial",this);
}
@Override
public void selfAction() {
System.out.println("数钱");
}
@Override
public void outAction() {
System.out.println("公司最新赚钱太少了,发不起工资了");
}
}
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/9/7 13:54
* @Version:
* @Acton: 市场部
*/
public class Market implements Department {
private Mediator mediator; //持有中介者的引用
public Market(Mediator mediator) {
this.mediator = mediator;
mediator.register("market",this);
}
@Override
public void selfAction() {
System.out.println("接项目");
}
@Override
public void outAction() {
System.out.println("承接项目需要资金支持");
mediator.command("finacial");
}
}
/**
* @Author: create_By: chenxin
* @Data:Created in 2018/9/7 16:04
* @Version:
* @Acton:
*/
public class TestMediatorDemo {
public static void main(String[] args){
test1();
}
private static void test1() {
Mediator president = new President();
Market market = new Market(president);
Finacial finacial = new Finacial(president);
Development development = new Development(president);
market.selfAction();
market.outAction();
}
}