中介者模式
基础概念
什么是中介者模式?
答案: 中介者模式(Mediator Pattern)用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用,从而使其耦合松散。
使用场景:
- 对象之间存在复杂的引用关系
- 想通过一个中间类来封装多个类的行为
优点:
- 降低类的复杂度
- 各类之间解耦
- 符合迪米特原则
缺点:
- 中介者会变得复杂
实现方式
java
// 中介者接口
public interface Mediator {
void send(String message, Colleague colleague);
}
// 同事类
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public abstract void receive(String message);
public abstract void send(String message);
}
// 具体同事A
public class ConcreteColleagueA extends Colleague {
public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
@Override
public void receive(String message) {
System.out.println("同事A收到: " + message);
}
@Override
public void send(String message) {
mediator.send(message, this);
}
}
// 具体中介者
public class ConcreteMediator implements Mediator {
private ConcreteColleagueA colleagueA;
private ConcreteColleagueB colleagueB;
public void setColleagueA(ConcreteColleagueA colleagueA) {
this.colleagueA = colleagueA;
}
public void setColleagueB(ConcreteColleagueB colleagueB) {
this.colleagueB = colleagueB;
}
@Override
public void send(String message, Colleague colleague) {
if (colleague == colleagueA) {
colleagueB.receive(message);
} else {
colleagueA.receive(message);
}
}
}练习题
- 中介者模式的应用场景?
- 中介者模式和观察者模式的区别?
- 如何避免中介者过于复杂?