观察者模式
2016-02-15 10:18
148 查看
观察者模式: 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系, 让多个观察者对象同时监听某一个主题对象, 这个主题对象的状态发生变化时就会通知所有的观察者对象,使得它们能够自动更新自己。
观察者模式需要先订阅再发布
var pubsub = {};(function (q) {var topics = {}, // 回调函数存放的数组subUid = -1;// 发布方法q.publish = function (topic, args) {if (!topics[topic]) {return false;}setTimeout(function () {var subscribers = topics[topic],len = subscribers ? subscribers.length : 0;while (len--) {subscribers[len].func(topic, args);}}, 0);return true;};//订阅方法q.subscribe = function (topic, func) {if (!topics[topic]) {topics[topic] = [];}var token = (++subUid).toString();topics[topic].push({token: token,func: func});return token;};//退订方法q.unsubscribe = function (token) {for (var m in topics) {if (topics[m]) {for (var i = 0, j = topics[m].length; i < j; i++) {if (topics[m][i].token === token) {topics[m].splice(i, 1);return token;}}}}return false;};} (pubsub));
相关文章推荐
- 简单oracle常用sql操作
- Spark Streaming使用Kafka保证数据零丢失
- 刀光剑影2
- rust 语言的开发的环境的安装
- ASP.NET使用UpdatePanel实现AJAX
- 惰性函数——JS高级
- centos7编译安装pure-ftpd-1.0.42
- unityTaidou(五)unity中委托事件
- C#设计模式04-单例模式
- 如何构建业务驱动的云数据中心
- The kiss Principal
- [solr] - 环境搭建2
- Android - 背景颜色透明度
- CodeForces 622A Infinite Sequence
- Android中dip、dp、sp、pt和px
- jenkins结点报错java.nio.file.AccessDeniedException: c:\jenkins.home\jobs\jobname\nextBuildNumber
- Robotium之Android控件定位实践和建议
- [solr] - 环境搭建
- 如何打开-oracle-监听器。
- C#读写config配置文件