题目
介绍下中介者模式
答案
中介者模式(Mediator Pattern)用一个中介对象封装一系列对象之间的交互,使各对象不需要显式地引用彼此,解耦系统中的对象关系。
适用场景:
- 多个对象之间存在复杂的通信关系。
- 希望将交互集中管理,简化对象间依赖。
Java 示例:聊天房间中介
```java
// 抽象中介者
interface ChatMediator {
void sendMessage(String message, User user);
}
// 具体中介者
class ChatRoom implements ChatMediator {
private List<User> users = new ArrayList<>();
public void addUser(User user) {
users.add(user);
}
public void sendMessage(String message, User user) {
for (User u : users) {
if (u != user) {
u.receive(message);
}
}
}
}
// 抽象同事类
abstract class User {
protected ChatMediator mediator;
protected String name;
public User(ChatMediator mediator, String name) {
this.mediator = mediator;
this.name = name;
}
public abstract void send(String message);
public abstract void receive(String message);
}
// 具体同事类
class ChatUser extends User {
public ChatUser(ChatMediator mediator, String name) {
super(mediator, name);
}
public void send(String message) {
System.out.println(name + " sends: " + message);
mediator.sendMessage(message, this);
}
public void receive(String message) {
System.out.println(name + " receives: " + message);
}
}
// 测试
public class MediatorTest {
public static void main(String[] args) {
ChatRoom chatRoom = new ChatRoom();
User alice = new ChatUser(chatRoom, "Alice");
User bob = new ChatUser(chatRoom, "Bob");
chatRoom.addUser(alice);
chatRoom.addUser(bob);
alice.send("Hi Bob!");
bob.send("Hello Alice!");
}
}
```
