中介者模式(Mediator Pattern)是一种行为型模式,它将多个对象之间的交互封装在一个中介对象中,使得对象之间没有直接的引用关系,从而降低了对象之间的耦合度。
中介者模式的主要角色如下:
- 抽象中介者(Mediator):定义了同事对象之间通信的接口。
- 具体中介者(ConcreteMediator):实现了抽象中介者接口,并负责协调同事对象之间的交互。
- 同事对象(Colleague):与其他同事对象和中介者进行通信。
中介者模式的实现如下:
// 抽象中介者
public interface Mediator {
void send(String message, Colleague colleague);
}
// 具体中介者
public class ConcreteMediator implements Mediator {
private List<Colleague> colleagues = new ArrayList<>();
@Override
public void send(String message, Colleague colleague) {
for (Colleague c : colleagues) {
if (c != colleague) {
c.receive(message);
}
}
}
public void addColleague(Colleague colleague) {
colleagues.add(colleague);
}
public void removeColleague(Colleague colleague) {
colleagues.remove(colleague);
}
}
// 同事对象
public abstract class Colleague {
protected Mediator mediator;
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
public abstract void receive(String message);
}
// 具体同事对象1
public class ConcreteColleague1 extends Colleague {
public ConcreteColleague1(Mediator mediator) {
super(mediator);
}
@Override
public void receive(String message) {
System.out.println("具体同事对象1收到消息:" + message);
}
}
// 具体同事对象2
public class ConcreteColleague2 extends Colleague {
public ConcreteColleague2(Mediator mediator) {
super(mediator);
}
@Override
public void receive(String message) {
System.out.println("具体同事对象2收到消息:" + message);
}
}
public class Main {
public static void main(String[] args) {
// 创建中介者
Mediator mediator = new ConcreteMediator();
// 创建同事对象
Colleague colleague1 = new ConcreteColleague1(mediator);
Colleague colleague2 = new ConcreteColleague2(mediator);
// 将同事对象添加到中介者中
mediator.addColleague(colleague1);
mediator.addColleague(colleague2);
// 同事对象通过中介者进行通信
colleague1.send("消息1");
colleague2.send("消息2");
}
}