Java设计模式之中介者模式
欢迎来到我的博客!今天,我们将深入研究Java设计模式中的中介者模式,一种用于减少对象之间直接通信,而通过中介者进行协调的行为型设计模式。中介者模式在实际应用中广泛用于处理对象之间的复杂交互逻辑,提高了系统的可维护性和可扩展性。本文将详细介绍中介者模式的概念、使用方法以及适用场景。
1 中介者模式是什么?
中介者模式是一种行为型设计模式,它通过一个中介者对象,使各个对象之间不再直接交互,而是通过中介者进行通信。中介者模式主要用于解耦对象之间的关系,减少对象之间的直接依赖关系,提高系统的灵活性和可维护性。
2 使用方法
中介者模式主要包括以下几个核心角色:中介者(Mediator)、具体中介者(ConcreteMediator)、同事类(Colleague)。
2.1 中介者(Mediator)
public interface Mediator {
void send(String message, Colleague colleague);
}
2.2 具体中介者(ConcreteMediator)
import java.util.ArrayList;
import java.util.List;
public class ConcreteMediator implements Mediator {
private List<Colleague> colleagues = new ArrayList<>();
public void addColleague(Colleague colleague) {
colleagues.add(colleague);
}
@Override
public void send(String message, Colleague colleague) {
for (Colleague c : colleagues) {
if (c != colleague) {
c.receive(message);
}
}
}
}
2.3 同事类(Colleague)
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public abstract void send(String message);
public abstract void receive(String message);
}
2.4 具体同事类(ConcreteColleague)
public class ConcreteColleagueA extends Colleague {
public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
@Override
public void send(String message) {
mediator.send(message, this);
}
@Override
public void receive(String message) {
System.out.println("Concrete Colleague A received: " + message);
}
}
public class ConcreteColleagueB extends Colleague {
public ConcreteColleagueB(Mediator mediator) {
super(mediator);
}
@Override
public void send(String message) {
mediator.send(message, this);
}
@Override
public void receive(String message) {
System.out.println("Concrete Colleague B received: " + message);
}
}
2.5 客户端(Client)
public class Client {
public static void main(String[] args) {
ConcreteMediator mediator = new ConcreteMediator();
Colleague colleagueA = new ConcreteColleagueA(mediator);
Colleague colleagueB = new ConcreteColleagueB(mediator);
mediator.addColleague(colleagueA);
mediator.addColleague(colleagueB);
colleagueA.send("Hello from A");
colleagueB.send("Hi from B");
}
}
3 适用场景
中介者模式适用于以下场景:
- 系统中对象之间存在复杂的交互关系,导致对象之间的依赖关系较为复杂。
- 一个对象的改变会影响到其他对象,而且这些对象之间的依赖关系是动态的。
- 需要通过一个中介者来统一协调一系列对象的交互。
4 总结
中介者模式是一种协调对象之间交互的巧妙设计,通过引入中介者对象,将对象之间的直接依赖关系解耦,提高了系统的灵活性和可维护性。希望通过本文的介绍,你对中介者模式有了更深刻的理解。
评论区