什么是中介者模式?
中介者模式(Mediator Pattern)是一种行为型设计模式,它通过将对象之间的交互封装到一个中介者对象中,使对象之间的耦合性降低。在中介者模式中,对象之间不再直接进行通信,而是通过中介者进行消息传递和协调。
代码示例
1、定义中介者接口(Mediator):该接口定义了不同对象之间的交互方法,通常包括注册对象、发送消息等方法。
public interface Mediator {
void register(Colleague colleague);
void send(String message, Colleague colleague);
}
2、实现具体的中介者类:该类实现了中介者接口,并负责协调各个同事对象之间的通信。
public class ConcreteMediator implements Mediator {
private List<Colleague> colleagues;
public ConcreteMediator() {
colleagues = new ArrayList<>();
}
@Override
public void register(Colleague colleague) {
colleagues.add(colleague);
}
@Override
public void send(String message, Colleague colleague) {
for (Colleague c : colleagues) {
if (c != colleague) {
c.receive(message);
}
}
}
}
3、定义同事类接口:该接口定义了同事对象的基本行为,包括发送消息和接收消息的方法。
public interface Colleague {
void send(String message);
void receive(String message);
}
4、实现具体的同事类:该类实现了同事类接口,通过中介者发送和接收消息。
public class ConcreteColleague implements Colleague {
private Mediator mediator;
public ConcreteColleague(Mediator mediator) {
this.mediator = mediator;
}
@Override
public void send(String message) {
mediator.send(message, this);
}
@Override
public void receive(String message) {
System.out.println("Received message: " + message);
}
}
使用中介者模式:
public class Main {
public static void main(String[] args) {
Mediator mediator = new ConcreteMediator();
Colleague colleague1 = new ConcreteColleague(mediator);
Colleague colleague2 = new ConcreteColleague(mediator);
mediator.register(colleague1);
mediator.register(colleague2);
colleague1.send("Hello");
colleague2.send("Hi");
}
}
运行代码,输出为:
Received message: Hi
Received message: Hello
在中介者模式中,中介者对象负责协调对象之间的交互,将对象之间的依赖关系解耦,使得对象之间的通信更加简洁清晰。通过引入中介者,可以减少对象之间的直接依赖关系,提高系统的可维护性和扩展性。