中介者(Mediator)模式是一种行为设计模式,它定义了一个对象来封装一组对象之间的交互。中介者对象负责控制和协调这些对象之间的交互,使得这些对象不需要显式地相互引用,从而降低它们之间的耦合。
以下是一个简单的中介者模式实现示例,以一个简化版的聊天室应用为例:
- 定义中介者接口:
java
public interface ChatMediator {
void sendMessage(String message, User user);
void addUser(User user);
}
- 实现中介者:
java
public class ChatRoom implements ChatMediator {
private List<User> users = new ArrayList<>();
@Override
public void sendMessage(String message, User user) {
for (User u : users) {
if (u != user) { // 不向发送者回送消息
u.receiveMessage(message);
}
}
}
@Override
public void addUser(User user) {
users.add(user);
}
}
- 定义用户类:
java
public class User {
private String name;
private ChatMediator mediator;
public User(String name, ChatMediator mediator) {
this.name = name;
this.mediator = mediator;
mediator.addUser(this);
}
public void sendMessage(String message) {
mediator.sendMessage(message, this);
}
public void receiveMessage(String message) {
System.out.println(name + " received: " + message);
}
}
- 使用示例:
java
public class MediatorPatternDemo {
public static void main(String[] args) {
ChatMediator mediator = new ChatRoom();
User user1 = new User("Alice", mediator);
User user2 = new User("Bob", mediator);
User user3 = new User("Charlie", mediator);
user1.sendMessage("Hello, Bob!");
user2.sendMessage("Hi, Alice! How are you?");
user3.sendMessage("Hello, everyone!");
}
}
在这个示例中,ChatRoom
是中介者,负责转发消息给所有用户,而 User
对象只需要知道如何发送和接收消息,不需要知道其他用户的存在,这样实现了用户之间的解耦。
当你运行 MediatorPatternDemo
的 main
方法时,你会发现三个用户通过 ChatRoom
互相发送和接收消息,而不需要直接交互。