【JAVA设计模式】17.中介者模式
对象之间不直接交互,而是通过一个中介者进行交互。
UML图:
中介者对象:
interface Mediator {
void operator(Colleague colleague);
}
class ConcreteMediator implements Mediator {
private Colleague colleague1;
private Colleague colleague2;
public void registerColleague1(Colleague cc1) {
colleague1 = cc1;
}
public void registerColleague2(Colleague cc2) {
colleague2 = cc2;
}
@Override
public void operator(Colleague colleague) {
if (colleague instanceof ConcreteColleague1) {
colleague2.getMessage("abc");
} else if (colleague instanceof ConcreteColleague2) {
colleague1.getMessage("abc");
}
}
}
交互对象接口及其实现类:
interface Colleague {
void contact();
void getMessage(String message);
}
class ConcreteColleague1 implements Colleague {
private Mediator mediator;
public ConcreteColleague1(Mediator mediator) {
this.mediator = mediator;
}
@Override
public void getMessage(String message) {
System.out.println("colleague1 receive " + message);
}
@Override
public void contact() {
System.out.println("operating ConcreteColleague1");
mediator.operator(this);
}
}
客户端调用:
ConcreteMediator mediator = new ConcreteMediator();
Colleague colleague1 = new ConcreteColleague1(mediator);
Colleague colleague2 = new ConcreteColleague2(mediator);
mediator.registerColleague1(colleague1);
mediator.registerColleague2(colleague2);
colleague1.contact();
colleague2.contact();
在中介者类中注册交互对象,之后对交互对象调用交互方法,就会通过中介者访问其他交互对象
JAVA代码:https://github.com/zhuaizhuaixi/design-pattern/tree/master/src/designpattern/behavioral/mediator