中介者模式是行为型的模式之一
由实例演示:
首先建立一个中介者接口:
/*中介者接口*/
public interface mediator {
void register(String dname,Department p);
void command(String dname);
}
然后是抽象部门角色:
/*部门类接口*/
public interface Department {
void selfAction();//本部的本职工作
void outAction();//向总经理发出申请
}
定义两个具体部门实现类:
/*研发部门*/
public class Development implements Department {
private mediator m;//持有中介者(总经理)引用
public Development(mediator m) {
this.m = m;
m.register("development",this);
}
@Override
public void selfAction() {//对内工作
System.out.println("专心科研");
}
@Override
public void outAction() {//对外工作
System.out.println("申请经费");
m.command("Finacial");
}
}
/*财务部门*/
public class Finacial implements Department{
private mediator m;
public Finacial(mediator m) {
this.m = m;
m.register("Finacial",this);
}
@Override
public void selfAction() {
System.out.println("接收请求,分配资金");
}
@Override
public void outAction() {
System.out.println("报告财务情况");
}
}
然后是中介者实例(总经理类):
public class President implements mediator{
private Map<String,Department> map=new HashMap<>();
@Override
public void register(String dname, Department p) {
map.put(dname,p);
}
@Override
public void command(String dname) {
map.get(dname).selfAction();
}
}
最后客户端实现中介者模式:
//实现类与类之间通过中介者打交道,不直接联系
public class client {
public static void main(String[] args) {
mediator m=new President();
Department d=new Development(m);
Finacial f=new Finacial(m);
d.selfAction();
d.outAction();
}
}