Understanding Design Patterns in JavaScript - Mediator Pattern
What is the Mediator Pattern? How can we use it to build a chat room?
/*
Mediator Design Pattern -> https://youtu.be/ZuhgOu-DGA4
Author: DevSage (Youtube) -> https://www.youtube.com/DevSage
*/
function Member(name)
{
this.name = name
this.chatroom = null
}
Member.prototype = {
send: function(message, toMember)
{
this.chatroom.send(message, this, toMember)
},
receive: function(message, fromMember)
{
console.log(`${fromMember.name} to ${this.name}: ${message}`)
}
}
function Chatroom()
{
this.members = {}
}
Chatroom.prototype = {
addMember: function(member)
{
this.members[member.name] = member
member.chatroom = this
},
send: function(message, fromMember, toMember)
{
toMember.receive(message, fromMember)
}
}
const chat = new Chatroom()
const bob = new Member("Bob")
const john = new Member("John")
const tim = new Member("Tim")
chat.addMember(bob)
chat.addMember(john)
chat.addMember(tim)
bob.send("Hey, John", john)
john.send("What's up, Bob", bob)
tim.send("John, are you ok?", john)
#JavaScript #WebDev