Хотелось бы выслушать объективную критику по поводу реализации паттерна "наблюдатель"
выставляю основной класс.
тудухи в комментах можно считать вопросами.
спасибо!
/**
* класс "наблюдатель" реализующий работу с кастомными событиями
* @todo подумать над названием класса
* @todo решить проблему с пространством имен Н: событие switchTab может быть у разных объектов
*/
function observer()
{
this.events = new Array();
/**
* добавляет наблюдателя
* @param {string} objName имя объекта наблюдателя
* @param {string} eventName событие которое отслеживаем
*/
this.addObserver = function(objName, eventName)
{
if (!this.events[eventName])
{
this.events[eventName] = new Array();
}
this.events[eventName].push(objName)
}
/**
* оповещает всех наблюдателей о произошедшем событии
* @param {string} eventName название события
*/
this.fireEvent = function(eventName)
{
var f = eventName.charAt(0).toUpperCase();
var eventNameUpperFirst = f + eventName.substr(1, eventName.length-1);
for(var i = 0; i < this.events[eventName].length; i++)
{
window[this.events[eventName][i]]['on' + eventNameUpperFirst]();
}
}
/**
* удаляет наблюдателя
* @param {string} objName имя объекта наблюдателя
* @param {string} eventType событие которое отслеживаем
*/
this.removeObserver = function(objName, eventType)
{
for(var i = 0; i < this.events[eventName].length; i++)
{
if (this.events[eventName][i] == objName)
{
this.events[eventName][i] = null;
}
}
}
}
var observer = new observer();