中介者模式(Mediator Pattern)是一种行为设计模式,它允许你减少对象之间的混乱依赖关系。通过引入一个中介者对象,来封装一系列对象之间的交互,使得各对象不需要显式地相互引用,从而使其耦合松散,并且可以独立地改变它们之间的交互。
中介者模式主要分为两种类型:
以下是一个简单的 JavaScript 中介者模式的实现示例:
// 抽象中介者
class Mediator {
constructor() {
this.colleagues = [];
}
addColleague(colleague) {
this.colleagues.push(colleague);
}
send(message, from, to) {
// 默认情况下,消息会广播给所有同事
if (!to) {
this.colleagues.forEach(colleague => {
if (colleague !== from) {
colleague.receive(message);
}
});
} else {
to.receive(message);
}
}
}
// 具体中介者
class ChatRoom extends Mediator {
send(message, from, to) {
console.log(`${from.name} to ${to ? to.name : 'all'}: ${message}`);
super.send(message, from, to);
}
}
// 同事类
class User {
constructor(name, mediator) {
this.name = name;
this.mediator = mediator;
}
send(message, to) {
this.mediator.send(message, this, to);
}
receive(message) {
console.log(`${this.name} received: ${message}`);
}
}
// 使用示例
const chatRoom = new ChatRoom();
const user1 = new User('Alice', chatRoom);
const user2 = new User('Bob', chatRoom);
const user3 = new User('Charlie', chatRoom);
chatRoom.addColleague(user1);
chatRoom.addColleague(user2);
chatRoom.addColleague(user3);
user1.send('Hello everyone!');
user2.send('Hi Alice, how are you?');
user1.send('I am fine, thanks!', user2);
通过合理使用中介者模式,可以有效地降低系统的耦合度,提高代码的可维护性和扩展性。
领取专属 10元无门槛券
手把手带您无忧上云