中介者模式 📖
定义
中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。
实现
js
class Participant {
constructor(name) {
this.name = name
this.chatroom = null
}
send(message, to) {
this.chatroom.send(message, this, to)
}
receive(message, from) {
console.log(from.name + ' to ' + this.name + ': ' + message)
}
}
class Chatroom {
participants = {}
register(participant) {
this.participants[participant.name] = participant
participant.chatroom = this
}
send(message, from, to) {
if (to) {
to.receive(message, from)
} else {
for (let key in this.participants) {
if (this.participants[key] !== from) {
this.participants[key].receive(message, from)
}
}
}
}
}
const yoko = new Participant('Yoko')
const john = new Participant('John')
const paul = new Participant('Paul')
const ringo = new Participant('Ringo')
const chatroom = new Chatroom()
chatroom.register(yoko)
chatroom.register(john)
chatroom.register(paul)
chatroom.register(ringo)
yoko.send('All you need is love.')
yoko.send('I love you John.')
john.send('Hey, no need to broadcast', yoko)
paul.send('Ha, I heard that!')
ringo.send('Paul, what do you think?', paul)