pubsub

Javascript. Схема публикация-подписка (Publish/Subscribe или Pub/Sub).

Публикация/подписка — схема работы с пользовательскими,то есть не ограниченными рамками DOM-модели событиями,  в которой мы сами задаем событие(публикуем) и обрабатываем его(подписываем на него обработчики).

В этой схеме подписчики и издатели отделены друг от друга и общее для них только имя события, которое издатель публикует, а подписчик на него подписывается. Такая разобщенность позволяет уменьшить связанность кода, упростить его написание и сопровождение.

Пример реализации схемы Pub/Sub:

var PubSub = function ()
{
    var handlers = {};

    this.subscribe = function (event, handler)
    {
        if (handlers[event] === undefined)  handlers[event] = [];
        handlers[event].push(handler);
    };

    this.publish = function (event)
    {
        if (handlers[event] === undefined) return;

        var i = 0,
            len = handlers[event].length;

        for (i; i < len; i++)
        {
            handlers[event][i](arguments[i+1]);
        }
    };
};

pubSub = new PubSub();
pubSub.subscribe('myEvent', function(arg){alert("myEvent worked. Arg: " + arg);});
pubSub.publish('myEvent', 'it myArg');

 

Для jQuery существует готовый плагин, реализующий схему Pub/Sub jquery-tiny-pubsub.