package com.coderbean.mediator;
/**
* Created by Chang on 15/10/3.
*/publicinterfaceMediator {void register(String dname, Department d);
void command(String name);
}
President
package com.coderbean.mediator;
import java.util.HashMap;
import java.util.Map;
/**
* Created by Chang on 15/10/3.
*/publicclassPresidentimplementsMediator {private Map<String,Department> map = new HashMap<String, Department>();
@Overridepublicvoidregister(String dname, Department d) {
this.map.put(dname,d);
}
@Overridepublicvoidcommand(String name) {
map.get(name).selfAction();
}
}
Department
package com.coderbean.mediator;
/**
* 同事类接口
* Created by Chang on 15/10/3.
*/publicinterfaceDepartment {void selfAction(); //做本部门的事情void outAction(); //向总经理发出申请
}
Finacial
package com.coderbean.mediator;
/**
* Created by Chang on 15/10/3.
*/publicclassFinacialimplementsDepartment {private Mediator m;
publicFinacial(Mediator m) {
this.m = m;
m.register("Finacial", this);
}
@OverridepublicvoidselfAction() {
System.out.println("数钱");
}
@OverridepublicvoidoutAction() {
System.out.println("汇报工作,钱太多了,不知道怎么花?");
}
}
Market
package com.coderbean.mediator;
/**
* Created by Chang on 15/10/3.
*/publicclassMarketimplementsDepartment {private Mediator m;
publicMarket(Mediator m) {
this.m = m;
m.register("Market", this);
}
@OverridepublicvoidselfAction() {
System.out.println("跑去接项目");
}
@OverridepublicvoidoutAction() {
System.out.println("汇报工作,项目承接的进度,需要资金支持");
m.command("Finacial");
}
}
Development
package com.coderbean.mediator;
/**
* Created by Chang on 15/10/3.
*/publicclassDevelopmentimplementsDepartment {private Mediator m;
publicDevelopment(Mediator m) {
this.m = m;
m.register("Development", this);
}
@OverridepublicvoidselfAction() {
System.out.println("专心科研,做研发");
}
@OverridepublicvoidoutAction() {
System.out.println("汇报工作,没钱了");
}
}
Client
package com.coderbean.mediator;
/**
* Created by Chang on 15/10/3.
*/publicclassClient {publicstaticvoidmain(String[] args) {
Mediator mediator = new President();
Department market = new Market(mediator);
Department department = new Development(mediator);
Department Finacial = new Finacial(mediator);
market.selfAction();
market.outAction();
}
}