介绍
中介者模式,它通过将对象之间的通信封装到一个中介者对象中,从而使对象之间的交互变得松散耦合。在中介者模式中,对象不再直接相互通信,而是通过中介者对象来进行通信。
主要步骤:
- 创建一个中介者对象,该对象负责协调其他对象之间的通信。
- 创建一些需要互相通信的对象,这些对象将成为中介者的成员。
- 在需要通信的对象中,将中介者对象作为参数传递给它们的方法或构造函数。
- 当一个对象想要与其他对象通信时,它将调用中介者对象的方法,通过中介者来进行通信。
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);