中介者模式(Mediator Pattern)
中介者模式(Mediator Pattern)是一种行为型设计模式,它旨在减少对象之间的直接通信,将对象的交互封装在一个中介者对象中。中介者对象负责协调对象之间的通信和行为,从而降低了对象之间的耦合度。
中介者模式的核心思想是通过引入一个中介者对象,将对象之间的复杂相互关系简化为对象与中介者之间的关系。对象不再直接相互通信,而是通过中介者对象进行通信。这可以降低系统中对象之间的依赖关系,使系统更易于维护和扩展。
场景
多对多关系:当系统中存在多个对象之间复杂的相互关系时,中介者模式可以用于简化对象之间的通信。
分布式系统:在分布式系统中,中介者模式可以用于实现对象之间的分布式通信和协调。
用户界面组件:中介者模式在用户界面组件之间的协调和通信中非常有用。
消息传递系统:中介者模式可以用于实现消息传递和事件驱动系统。
实现
// 中介者
class ChatMediator {
constructor() {
this.users = [];
}
addUser(user) {
this.users.push(user);
}
sendMessage(message, sender) {
for (const user of this.users) {
if (user !== sender) {
user.receiveMessage(message);
}
}
}
}
// 用户
class User {
constructor(name, mediator) {
this.name = name;
this.mediator = mediator;
mediator.addUser(this);
}
sendMessage(message) {
this.mediator.sendMessage(message, this);
}
receiveMessage(message) {
console.log(`${this.name} received message: ${message}`);
}
}
// 创建中介者
const chatMediator = new ChatMediator();
// 创建用户并注册到中介者
const user1 = new User("User 1", chatMediator);
const user2 = new User("User 2", chatMediator);
const user3 = new User("User 3", chatMediator);
// 用户发送消息
user1.sendMessage("Hello, everyone!");
user2.sendMessage("Hi there!");
在上面的示例中,ChatMediator 是中介者,负责协调用户之间的通信。User 是用户对象,它们通过中介者发送和接收消息。用户对象不直接与其他用户通信,而是通过中介者进行通信。
中介者模式使得系统更容易扩展,因为您可以轻松地添加新用户或扩展中介者的功能。它也降低了系统中对象之间的依赖关系,使得系统更易维护和理解。这种模式对于构建具有复杂对象之间相互关系的系统非常有用。