中介者模式(Mediator)使各同事类通过中介者进行交互,而不需要各同事类显式地互相引用。
中介者包含三部分:
- Mediator 中介者,定义与各同事通信的接口
- ConcreteMediator 协调并维护各同事类
- Colleague 同事类,与中介者对象通信
Mediator
abstract class Mediator {
protected Colleague colleagueA;
protected Colleague colleagueB;
public Mediator(Colleague colleagueA, Colleague colleagueB) {
this.colleagueA = colleagueA;
this.colleagueB = colleagueB;
}
abstract void colleagueChanged();
}
ConcreteMediator
class ConcreteMediator extends Mediator {
public ConcreteMediator(Colleague colleagueA, Colleague colleagueB) {
super(colleagueA, colleagueB);
}
@Override
public void colleagueChanged() {
colleagueA.doSomething();
colleagueB.doSomething();
}
}
Colleague
abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
void changed() {
mediator.colleagueChanged();
}
abstract void doSomething();
}