中介者模式通过引入中介者对象封装多个对象间的交互,降低耦合度。例如在聊天室系统中,用户通过中介者ChatRoom发送消息,避免直接引用,实现星型通信结构,提升可维护性和扩展性,适用于GUI、多点通信等场景。

在Java中,当多个对象之间频繁交互时,直接引用会导致系统高度耦合,难以维护和扩展。中介者模式(Mediator Pattern)通过引入一个中介者对象来封装一系列对象之间的交互,从而降低它们之间的直接依赖,实现松耦合的多层对象协调。
中介者模式属于行为型设计模式,它用一个中介对象来封装一组对象之间的交互。原本对象之间相互引用、直接通信的方式被改为都通过中介者进行通信,这样对象之间不再需要知道彼此的存在。
核心角色包括:
假设我们开发一个聊天室系统,用户(User)之间不能直接发送消息,必须通过聊天室(ChatRoom)转发。这时,聊天室就是中介者。
立即学习“Java免费学习笔记(深入)”;
// 中介者接口
interface ChatMediator {
void sendMessage(String message, User user);
void addUser(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 sender) {
for (User user : users) {
// 不发送给自己
if (user != sender) {
user.receive(message);
}
}
}
}
// 同事类:用户
class User {
protected String name;
protected ChatMediator mediator;
public User(String name, ChatMediator mediator) {
this.name = name;
this.mediator = mediator;
mediator.addUser(this);
}
public void send(String message) {
System.out.println(name + " 发送: " + message);
mediator.sendMessage(message, this);
}
public void receive(String message) {
System.out.println(name + " 收到: " + message);
}
}
使用方式:
ChatMediator chatRoom = new ChatRoom();
User alice = new User("Alice", chatRoom);
User bob = new User("Bob", chatRoom);
alice.send("你好,Bob!");
// 输出:
// Alice 发送: 你好,Bob!
// Bob 收到: 你好,Bob!
该模式显著降低了对象间的耦合度,将复杂的网状关系变为星型结构——所有对象只与中介者通信。
优点包括:
典型适用场景有:
虽然中介者模式有助于解耦,但也要注意避免将过多逻辑集中在中介者中,导致其变成“上帝对象”。应合理划分职责,必要时结合其他模式(如观察者模式)进一步优化结构。
基本上就这些,中介者模式为多对象协作提供了一种优雅的解耦方案,在适当场景下能显著提升代码的清晰度与可维护性。
以上就是在Java中如何实现多层对象协调_通过中介者模式减少耦合的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号