中介者(Mediator)模式的定义:定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的典型应用。
public interface Mediator {
void register(Colleague colleague);
}
public class ConcreteMediator implements Mediator {
private List<Colleague> colleagues=new ArrayList<Colleague>();
public void register(Colleague colleague) {
if(!colleagues.contains(colleague)) {
colleagues.add(colleague);
colleague.setMedium(this);
}
}
public void relay(Colleague cl) {
for(Colleague ob:colleagues) {
if(!ob.equals(cl)) {
((Colleague)ob).receive();
}
}
}
}
public abstract class Colleague {
protected Mediator mediator;
public void setMedium(Mediator mediator) {
this.mediator=mediator;
}
public abstract void receive();
public abstract void send();
}
public class ConcreteColleagueA extends Colleague {
public void receive() {
System.out.println("具体同事类A收到请求。");
}
public void send() {
System.out.println("具体同事类A发出请求。");
mediator.register(this); //请中介者转发
}
}
public class ConcreteColleagueB extends Colleague {
public void receive() {
System.out.println("具体同事类B收到请求。");
}
public void send() {
System.out.println("具体同事类B发出请求。");
mediator.register(this); //请中介者转发
}
}
public class MediatorPattern {
public static void main(String[] args) {
Mediator md=new ConcreteMediator();
Colleague c1,c2;
c1=new ConcreteColleagueA();
c2=new ConcreteColleagueB();
md.register(c1);
md.register(c2);
c1.send();
System.out.println("-------------");
c2.send();
}
}