《javascript 设计模式》 第15章 观察者模式 -- 学习笔记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了《javascript 设计模式》 第15章 观察者模式 -- 学习笔记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1600字,纯文字阅读大概需要3分钟。
内容图文
定义:
在事件驱动的环境中,比如浏览器这种持续寻求用户关注的环境中,观察者模式(又名发布者-订阅者 “publisher-subscriber" 模式) 是一种管理人与其任务之间的关系(确切的讲,是其对象及其行为和状态之间的关系
)的得力工具。用javascript的 话来说,这种模式的实质 就是你可以程序中某个对象的状态进行观察并且在其发生改变时能够得到通知。
观察者API:
var Publisher=function(){
this.subscribers=[];
}
//推送方法
Publisher.prototype.deliver=function(data){
this.subscribers.forEach(function(fn){
fn(data);
})
returnthis;
};
订阅方法:
Function.prototype.subscribe=function(publisher){
var self=this;
var alreadyExists=publisher.subscribers.some(function(value){
return value ===self;
}
);
if(!alreadyExists){
publisher.subscribers.push(this);
}
returnthis ;
};
这有个小插曲,译者在这段代码中加了译注 :
”因为任何函数都是 Function的实例,所以在Function.prototype中添加的新方法会被所有函数继承。当然这里把subscribe添加到Function.prototype中只是为了省事,在实际项目中不应该这样做。“
那应该怎么做呢? 我情不自禁的问道。
var subscribe=function(publisher){
var alreadyExists=publisher.subscribers.some(function(value){
return value ===self;
}
);
if(!alreadyExists){
publisher.subscribers.push(this);
}
}
(1)
哇 完全可以这么做.. 巧了!!
退订方法:
Function.prototype.unsubscribe=function(publisher){
var self=this;
publisher.subscribers=publisher.subscribers.filter(function(value){
return value !==self;
}
);
returnthis ;
};
当然 这个也可以成为上面函数(1)(2)那种形式:
var unsubscribe=function(publisher){
var self = this
publisher.subscribers= publisher.subscribers.filter(function(value){
return value !== self;
}
);
}
(3)
function c(a) { alert(a+3)}
var publisher= new Publisher
unsubscribe.call(a,publisher) (4)
OK 观察者模式大致就是这个样子了...。。。
原文:http://www.cnblogs.com/bjwang/p/4570416.html
内容总结
以上是互联网集市为您收集整理的《javascript 设计模式》 第15章 观察者模式 -- 学习笔记全部内容,希望文章能够帮你解决《javascript 设计模式》 第15章 观察者模式 -- 学习笔记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。