JavaScript设计模式——中介者模式

52 阅读1分钟

介绍

中介者模式,它通过将对象之间的通信封装到一个中介者对象中,从而使对象之间的交互变得松散耦合。在中介者模式中,对象不再直接相互通信,而是通过中介者对象来进行通信。

主要步骤:

  1. 创建一个中介者对象,该对象负责协调其他对象之间的通信。
  2. 创建一些需要互相通信的对象,这些对象将成为中介者的成员。
  3. 在需要通信的对象中,将中介者对象作为参数传递给它们的方法或构造函数。
  4. 当一个对象想要与其他对象通信时,它将调用中介者对象的方法,通过中介者来进行通信。

js代码

// 创建中介者对象
const Mediator = {
  // 注册对象
  register(object) {
    this[object.name] = object;
    object.mediator = this;
  },
  // 发送消息
  send(message,sender,receiver) {
    if (receiver) {
      receiver.receive(message,sender);
    } else {
      // 广播消息给所有注册的对象
      for (const key in this) {
        if (typeof this[key].receive === 'function') {
          this[key].receive(message,sender);
        }
      }
    }
  }
}

// 创建对象
const ObjectA = {
  name: 'ObjectA',
  receive(message,sender) {
    console.log(`${this.name} received ${message} from ${sender.name}`);
  }
}

const ObjectB = {
  name: 'ObjectB',
  receive(message,sender) {
    console.log(`${this.name} received ${message} from ${sender.name}`);
  }
}

const ObjectC = {
  name: 'ObjectC',
  receive(message,sender) {
    console.log(`${this.name} received ${message} from ${sender.name}`);
  }
}

// 注册对象到中介者
Mediator.register(ObjectA);
Mediator.register(ObjectB);
Mediator.register(ObjectC);

// 发送消息
Mediator.send('Hello',ObjectA);