设计模式之发布/订阅模式
2016-08-11 16:43
197 查看
<pre name="code" class="html"><html> <head> <title>Observer</title> <script type="text/javascript" src="js/jquery-1.12.4.min.js"></script> </head> <body> <script type="text/javascript"> var pubsub = (function() { //订阅者列表 var events = {}; var subUid = 0; //发布 function publish(eventName, args) { if (!events[eventName]) { return false; } var subscribers = events[eventName]; var len = subscribers.length; while (len--) { subscribers[len].callback(eventName, args); } } //订阅 function subscribe(eventName, callback) { events[eventName] = events[eventName] || []; var id = subUid++; events[eventName].push({ callback: callback, id: id }); return id; } //取消订阅 function unsubscribe(id) { var eventName; var i; var len; var subscribers; for (eventName in events) { subscribers = events[eventName]; if (subscribers) { for (i = 0, len = subscribers.length; i < len; i++) { if (subscribers[i].id === id) { subscribers.splice(i, 1); return id; } } } } return this; } //利用Revealing Module模式隐藏内部实现,提供接口 return { publish: publish, subscribe: subscribe, unsubscribe: unsubscribe }; }()); //在hello事件生增加一个订阅 var subscription = pubsub.subscribe("hello", function(eventName, data) { console.log("Event:" + eventName + "/data:" + data); }); //向订阅者发送消息 pubsub.publish("hello", ["天镶"]); //向订阅者发送消息 pubsub.publish("hello", ["天镶", "求", "offer"]); //取消订阅 pubsub.unsubscribe(subscription); //向订阅者发送消息 pubsub.publish("hello", ["天镶", "再求", "offer"]); </script> </body> </html>
相关文章推荐
- js设计模式中发布与订阅实现观察者模式例子
- 小话设计模式三:发布/订阅模式
- javascript设计模式学习之八_发布订阅(观察者)模式
- java设计模式-观察者(发布-订阅)模式
- 设计模式---订阅发布模式(Subscribe/Publish)
- 【JavaScript设计模式】行为型设计模式--发布-订阅模式
- javascript 设计模式 -- 发布/订阅模式
- 设计模式-观察者模式(发布订阅模式)
- 设计模式---订阅发布模式(Subscribe/Publish)
- 设计模式之(十、观察者模式(ObServer)/发布订阅模式(Pblish/Subscribe))
- 小话设计模式三:发布/订阅模式
- 设计模式(三)观察者模式Observer(发布订阅)
- 设计模式——订阅发布模式
- 【学习笔记javascript设计模式与开发实践(发布--订阅模式)----8】
- 23种设计模式 之 Observer模式(发布-订阅模式)[C语言]
- 设计模式之观察者模式(发布-订阅模式publish/Subscribe)
- 【学习笔记javascript设计模式与开发实践(发布--订阅模式)----8】
- java笔记--设计模式之观察者(订阅/发布)模式
- javascript 设计模式 发布订阅模式
- 设计模式(三):观察者模式与发布/订阅模式区别