[JS设计模式]Mediator/Middleware Pattern

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

请添加图片描述

请添加图片描述

以航空公司的空中飞行管控为例,来解释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("阿三你好,是啊,最近比较忙哦!");

运行结果如下:

请添加图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sif_666

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值