java 中介者模式 例子
时间: 2023-05-18 18:06:42 浏览: 111
一个简单的 Java 中介者模式的例子是一个聊天室程序。在这个程序中,每个用户都是一个 Colleague 对象,而聊天室则是一个 Mediator 对象。当一个用户发送消息时,它会通过 Mediator 对象来发送消息给其他用户。这样,每个用户都不需要知道其他用户的存在,而只需要与 Mediator 对象进行通信即可。
以下是一个简单的 Java 中介者模式的代码示例:
```
// Colleague 接口
interface Colleague {
void sendMessage(String message);
void receiveMessage(String message);
}
// Mediator 接口
interface Mediator {
void addUser(Colleague user);
void sendMessage(Colleague sender, String message);
}
// ChatRoom 类实现了 Mediator 接口
class ChatRoom implements Mediator {
private List<Colleague> users = new ArrayList<>();
@Override
public void addUser(Colleague user) {
users.add(user);
}
@Override
public void sendMessage(Colleague sender, String message) {
for (Colleague user : users) {
if (user != sender) {
user.receiveMessage(message);
}
}
}
}
// User 类实现了 Colleague 接口
class User implements Colleague {
private String name;
private Mediator mediator;
public User(String name, Mediator mediator) {
this.name = name;
this.mediator = mediator;
}
@Override
public void sendMessage(String message) {
mediator.sendMessage(this, message);
}
@Override
public void receiveMessage(String message) {
System.out.println(name + " received message: " + message);
}
}
// 使用示例
public class Main {
public static void main(String[] args) {
Mediator chatRoom = new ChatRoom();
Colleague user1 = new User("Alice", chatRoom);
Colleague user2 = new User("Bob", chatRoom);
Colleague user3 = new User("Charlie", chatRoom);
chatRoom.addUser(user1);
chatRoom.addUser(user2);
chatRoom.addUser(user3);
user1.sendMessage("Hello, everyone!");
}
}
```
在这个例子中,我们创建了一个 ChatRoom 对象作为 Mediator,然后创建了三个 User 对象作为 Colleague,并将它们添加到 ChatRoom 中。当 user1 发送消息时,它会通过 ChatRoom 对象来发送消息给其他用户。其他用户会收到消息并输出到控制台上。
阅读全文