es6 语法学习 - 中介者模式

es6 语法学习 - 中介者模式

一、基本概念

中介者模式(Mediator Pattern)是一种行为型模式,它主要用于降低系统中对象之间的耦合度,通过引入一个中介者来封装对象之间的交互,使得对象之间的交互更加灵活和可扩展。

二、 优点

  • 降低耦合性:对象之间不直接相互引用,而是通过中介者进行通信,降低了对象之间的依赖关系。
  • 增强可维护性:聚合了对象之间的交互逻辑,使得系统的修改和维护更为简单。
  • 集中控制:中介者可以控制对象之间的交互流程,为后续的功能扩展提供了便利。
  • 易于拓展:可以通过添加新的同事类来扩展新的功能,而无需改变现有的代码结构。

三、缺点

  • 中介者复杂性:随着系统扩展,中介者可能会变得复杂,承担过多的职责,导致难以维护。
  • 潜在的性能问题:所有的通信都需要经过中介者,可能会影响系统性能,尤其是在高负载情况下。

四、使用场景

  • 如多个组件需要协作完成某项任务时。
  • 如果对象的数量和交互关系不固定,使用中介者可以灵活管理。
  • 当对象间的通信变得繁杂时,中介者可以起到简化和优化的作用。

五、示例代码

以下是一个使用 ES6 语法实现中介者模式的例子,这个例子模拟了一个聊天室,其中多个用户可以通过一个中介者(聊天室)来发送和接收消息:

// 用户类
class User {
  constructor(name, mediator) {
    this.name = name;
    this.mediator = mediator;
  }

  sendMessage(message) {
    this.mediator.sendMessage(this, message);
  }

  receiveMessage(sender, message) {
    console.log(`${sender.name} says to ${this.name}: ${message}`);
  }
}

// 中介者(聊天室)类
class ChatRoom {
  constructor() {
    this.users = [];
  }

  registerUser(user) {
    this.users.push(user);
    user.mediator = this; // 确保用户知道它们的中介者
  }

  sendMessage(sender, message) {
    this.users.forEach((user) => {
      if (user !== sender) {
        user.receiveMessage(sender, message);
      }
    });
  }
}

// 使用中介者模式
const chatRoom = new ChatRoom();

const alice = new User('Alice', null); // 初始时,我们不直接传递中介者,而是在注册时设置
const bob = new User('Bob', null);
const charlie = new User('Charlie', null);

chatRoom.registerUser(alice);
chatRoom.registerUser(bob);
chatRoom.registerUser(charlie);

// 用户发送消息
alice.sendMessage('Hello everyone!');
bob.sendMessage('Hi Alice, how are you?');
charlie.sendMessage('What are we chatting about today?');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值