[JS设计模式]Mediator/Middleware Pattern

中介模式使组件能够通过一个中心点(中介)相互交互。各组件之间并不是直接交互,而是接收请求并将其转发!在JavaScript中,中介通常只是一个对象字面量或一个函数。

[JS设计模式]Mediator/Middleware Pattern_第1张图片

[JS设计模式]Mediator/Middleware Pattern_第2张图片

以航空公司的空中飞行管控为例,来解释mediator模式。假设,每架飞机相互之间都是自己直接沟通,整个沟通网络会非常繁杂而不好控制,可能会出现意外情况,后果将非常严重。那么,实际的飞行调度是通过AOC来完成,而AOC将相当于一个mediator的角色。

中介模式的一个很好的用例是聊天室!聊天室内的用户不会直接相互交谈。相反,聊天室充当了用户之间的中介。

class User {
    constructor(name, chatroom) {
        this.name = name;
        this.chatroom = chatroom;
    }

    getName() {
        return this.name;
    }

    send(message) {
        this.chatroom.logMessage(this, message);
    }
}

class ChatRoom {
    logMessage(user, message) {
        const time = new Date();
        const sender = user.getName();
        console.log(`${time} [${sender}]: ${message}`);
    }
}

const chatroom = new ChatRoom();

const user1 = new User("张三", chatroom);
const user2 = new User("李四", chatroom);

user1.send("李四,好久不见!");
user2.send("阿三你好,是啊,最近比较忙哦!");

运行结果如下:

[JS设计模式]Mediator/Middleware Pattern_第3张图片

你可能感兴趣的:(javascript,设计模式,中介者模式)