Skip to content

中介者模式

基础概念

什么是中介者模式?

答案: 中介者模式(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);
        }
    }
}

练习题

  1. 中介者模式的应用场景?
  2. 中介者模式和观察者模式的区别?
  3. 如何避免中介者过于复杂?

Released under the MIT License.