中介者模式在对象通信中的应用
模式简介
中介者模式通过引入中介对象来协调多个对象间的交互,降低对象间的直接耦合。
核心优势
有效解耦对象间的直接依赖关系
典型应用场景包括:即时通讯系统、交易平台等
模式结构
- 抽象中介接口
- 具体中介实现
- 抽象组件类
- 具体组件实现
Java实现示例
以在线聊天系统为例
中介者接口
public interface ChatPlatform {
void registerMember(ChatMember member);
void relayMessage(ChatMember sender, String content);
}
具体中介者
public class ChatRoom implements ChatPlatform {
private List<ChatMember> members = new ArrayList<>();
@Override
public void registerMember(ChatMember member) {
members.add(member);
member.setPlatform(this);
}
@Override
public void relayMessage(ChatMember sender, String content) {
for(ChatMember m : members) {
if(m != sender) {
m.receiveMessage(sender.getName(), content);
}
}
}
}
成员基类
public abstract class ChatMember {
protected ChatPlatform platform;
protected String name;
public ChatMember(String name) {
this.name = name;
}
public void setPlatform(ChatPlatform platform) {
this.platform = platform;
}
public abstract void send(String message);
public abstract void receiveMessage(String sender, String message);
public String getName() {
return name;
}
}
普通成员实现
public class RegularMember extends ChatMember {
public RegularMember(String name) {
super(name);
}
@Override
public void send(String message) {
platform.relayMessage(this, message);
}
@Override
public void receiveMessage(String sender, String message) {
System.out.println(name + " 收到来自 " + sender + " 的消息: " + message);
}
}
测试代码
public class Demo {
public static void main(String[] args) {
ChatPlatform room = new ChatRoom();
ChatMember alice = new RegularMember("Alice");
ChatMember bob = new RegularMember("Bob");
room.registerMember(alice);
room.registerMember(bob);
alice.send("大家好!");
bob.send("欢迎新成员!");
}
}
输出结果
Bob 收到来自 Alice 的消息: 大家好!
Alice 收到来自 Bob 的消息: 欢迎新成员!