中介者/中间件模式(Mediator/Middleware Pattern)
中介者模式使组件可以通过一个中心点(中介者)相互交互。中介者不是直接相互交谈,而是接收请求并将其转发!在 JavaScript 中,中介者通常只不过是一个对象文字或一个函数。
您可以将此模式与空中交通管制员和飞行员之间的关系进行比较。飞行员不会直接相互交谈(这可能会导致相当混乱),而是与空中交通管制员交谈。空中交通管制员确保所有飞机都能收到安全飞行所需的信息,而不会撞到其他飞机。
尽管我们不希望在 JavaScript 中控制飞机,但我们经常必须处理对象之间的多向数据。如果有大量组件,组件之间的通信可能会变得相当混乱。
对象的请求由中介器处理,而不是让每个对象直接与其他对象通信,从而形成多对多关系。中介器处理该请求,并将其转发到需要的位置。
中介者模式的一个很好的用例是聊天室!聊天室中的用户不会直接相互交谈。相反,聊天室充当用户之间的中介。
代码实现:
typescript
//聊天室是一个中间件
class ChatRoom {
logMessage(user: any, message: string) {
const time = new Date();
const sender = user.getName();
console.log(`${time} [${sender}]: ${message}`);
}
}
//用户模版
class User {
constructor(public name: string, public chatroom: ChatRoom) {}
getName() {
return this.name;
}
send(message: string) {
//发送信息的功能通过聊天室发送
this.chatroom.logMessage(this, message);
}
}
const chatroom = new ChatRoom();
const user1 = new User("John Doe-1", chatroom);
const user2 = new User("Jane Doe-2", chatroom);
user1.send("hi there");
user2.send("hi there");