白筱汐

想都是问题,做都是答案

0%

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

介绍

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

主要步骤:

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

js代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// 创建中介者对象
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);