中介者模式(Mediator):用一个中介对象来封装一系列的对象交互。
类图:
代码:
publicabstractclass Colleague {
protected Mediator mediator;
publicabstractvoid notifys();
}
publicinterface Mediator {
publicvoid send(String msg);
}
publicclass ConcreteColleagueA extends Colleague {
@Override
publicvoid notifys() {
System.out.println("同事A操作!");
}
}
publicclass ConcreteColleagueB extends Colleague{
@Override
publicvoid notifys() {
System.out.println("同事B操作!");
}
}
publicclass ConcreteMediator implements Mediator {
private ConcreteColleagueA A=new ConcreteColleagueA();
private ConcreteColleagueB B=new ConcreteColleagueB();
@Override
publicvoid send(String msg) {
if("one".equals(msg)){
A.notifys();
}else{
B.notifys();
}
}
}
publicstaticvoid main(String[] args) {
Mediator mediator=new ConcreteMediator();
mediator.send("one");
mediator.send("two");
}
优点:简化的结构,网状结构——>星状结构。
缺点:在中介者类中需要判断,每一次修改操作类个数都要修改此类。
对于程序结构的优化,把多对多转为一对多的关系。不过程序很少会出现这么复杂的情况。