Mediator – wzorzec projektowy w JavaScript

Mediator to centralny węzeł komunikacyjny w programie zarządzający przesyłaniem wiadomości w rozproszonym systemie. Zainteresowane obiekty wiedzą o mediatorze, ale o sobie nawzajem już nie. Mediator zdejmuje odpowiedzialność za komunikację między obiektami dostarczając interfejs do wysyłki oraz odbioru wiadomości.

Kod staje się dzięki mediatorowi czytelniejszy, ale jeśli zawiedzie przestaną działać elementy aplikacji, które z niego korzystają.

function User(name) {
    this.name = name;
    this.chatroom = null;
}

// funkcje otrzymywania i wysyłania informacji w chat
User.prototype.send = function(msg, to){
    this.chatroom.send(msg, this, to);
}
User.prototype.receive = function(msg, from) {
    console.log("from:" + from.name, " to user:"
     + this.name, ": "+  msg);
}

Kod chat-u.:

let chatRoom = function() {
    let users = {};
    return {
        register: function(user) {
            if(!users[user.name]){
               users[user.name] = user; 
               user.chatroom = this;
            }
        },
        send: function(msg, from, to){
            if(to) {
                to.receive(msg, from);
            } else {
                for( key in users ) {
                    if(users[key] !== from)
                 users[key].receive(msg, from);
                }
            }
        } 
    }
}

Połączenie chatu z użytkownikami:

const chat = chatRoom();

let user1 = new User("Ania"); chat.register(user1);
let user2 = new User("Basia"); chat.register(user2);
let user3 = new User("Kasia"); chat.register(user3);

user1.send("Cześć wszystkim!");
// from:Ania  to user:Basia : Cześć wszystkim!
// from:Ania  to user:Kasia : Cześć wszystkim!

user2.send("Witaj Ania", user1);
// from:Basia  to user:Ania : Witaj Ania

KW

Scroll to Top