使用观察者设计模式的原因

时间:2018-11-13 07:03:26

标签: javascript jquery design-patterns

我对JavaScript比较陌生,最近开始学习各种设计模式。我了解观察者设计模式是如何工作的,但是我不太了解何时使用它们。看一下这种相对简单的观察者模式:

function Observer(){
	this.listeners = {};
}
Observer.prototype.add = function(event,func){
	if(!this.listeners[event]){
  	this.listeners[event] = [];
  }
  this.listeners[event].push(func)
}
Observer.prototype.remove = function(event, func){
	var ref = this.listeners[event],
  var len = ref.length;
  for(var i =0; i<len; i++){
  	if(listener===func){
    	ref.splice(i,1)
    }
  }
}
Observer.prototype.trigger = function(event){
  var ref = this.listeners[event];
  var len = ref.length;
  for(var i=0; i<len; len++){
  	var listener = ref[i];
    if(typeof listener == 'function') {listener()}
  }
}
var observer = new Observer();
var observerFunc = function(){console.log('notified')};
observer.add("test",observerFunc)
observer.trigger("test") // logs "notified"

我的问题是,使用上面的观察者模式并使用jQuery做下面的事情的好处是什么?第二种方法的局限性是什么?它们都在事件发生时调用某些功能,但是我感觉我缺少一个基本功能。

var observer = {
	observerfunction : function(){console.log('Observer notified')}
}

$('selector').on("observerFunction", function(){
	observer.observerfunction();
})

$('selector').trigger('observerFunction');

0 个答案:

没有答案