javascript publish/subscribe or observer pattern
定义
定义一对多的对象封装,目标对象状态发生变化,它所有的接受者都会收到通知并做相应的更新。
使用频率:5/5 最高
概要
观察者模式,也就是发布者/订阅者模式,当发布者发布一个通知的时候,订阅者就会收到通知,并调用自己的更新方法,做些什么事情。这种通知是单向的,只能由发布者向订阅者发布通知。
图标说明

示例代码
var Publisher = function () {
this.subscribers = [];
}
Publisher.prototype = {
constructor: Publisher,
addSubscriber: function(subscriber){
this.subscribers.push(subscriber);
},
removeSubscriber: function(subscriber){
var subscribers = this.subscribers,
len = subscribers.length,
i = 0;
for(; i < len; i++){
if (subscribers[i] === subscriber) {
delete subscribers[i];
break;
};
}
},
notifySubscriber: function(message){
var subscribers = this.subscribers,
len = subscribers.length,
i = 0;
for(; i< len; i++){
subscribers[i].receiveMessage(message);
}
}
};
var Subscriber = function(subscriberName, publisher){
this.name = subscriberName;
this.publisher = publisher;
};
Subscriber.prototype = {
constructor: Subscriber,
receiveMessage: function(message){
console.log('I am ' + this.name + ' I receive: ' + message);
}
};
var publisher = new Publisher();
var subUser_001 = new Subscriber('subUser_001', publisher);
var subUser_002 = new Subscriber('subUser_002', publisher);
var subUser_003 = new Subscriber('subUser_003', publisher);
publisher.addSubscriber(subUser_001);
publisher.addSubscriber(subUser_002);
publisher.addSubscriber(subUser_003);
publisher.notifySubscriber('百度推送新闻了');
javascript publish/subscribe or observer pattern的更多相关文章
- Learning JavaScript Design Patterns The Observer Pattern
The Observer Pattern The Observer is a design pattern where an object (known as a subject) maintains ...
- Publish/Subscribe Pattern & Vanilla JavaScript
Publish/Subscribe Pattern & Vanilla JavaScript https://en.wikipedia.org/wiki/Publish–subscribe_p ...
- javascript设计模式——Publish/Subscribe
推荐阅读http://dev.housetrip.com/2014/09/15/decoupling-javascript-apps-using-pub-sub-pattern/ 我们先引出问题的所在 ...
- jQuery中的观察者模式(Observer Pattern)
在jQuery中,on方法可以为元素绑定事件,trigger方法可以手动触发事件,围绕这2个方法,我们来体验jQuery中的观察者模式(Observer Pattern). ■ on方法绑定内置事件, ...
- 深入浅出设计模式——观察者模式(Observer Pattern)
模式动机 建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应做出反应.在此,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而 ...
- 24种设计模式--观察者模式【Observer Pattern】
<孙子兵法>有云: “知彼知己,百战不殆:不知彼而知己,一胜一负:不知彼,不知己,每战必殆”,那怎么才能知己知彼呢?知己是很容易的,自己的军队嘛,很容易知道,那怎么知彼呢?安插间谍是很好 ...
- PHP 观察者模式和php实现 Observer Pattern
观察者模式: 观察者模式(Observer Pattern):定义对象间的一种一对多依赖关系,使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新.观察者模式又叫做发布-订阅(Publ ...
- Publish/Subscribe Model——Notification chain——观察者模式
内核中用的很多,整理时间子系统的时候又遇到了notification mechanism,因此做次记录: 参考:1.http://msdn.microsoft.com/en-us/library/ff ...
- Design Pattern: Observer Pattern
1. Brief 一直对Observer Pattern和Pub/Sub Pattern有所混淆,下面打算通过这两篇Blog来梳理这两种模式.若有纰漏请大家指正. 2. Use Case 首先我们来面 ...
随机推荐
- SQL Server死锁排查经历 -基于SqlProfiler
提到sql server,想必最让人头疼的当属锁机制了.在默认的read committed隔离模式下,连最基本的select操作都要申请各种粒度的锁,而且在读取数据过程中会不断有锁升级.转化.在非 ...
- eclipse+cygwin+cdt搭建c/c++开发环境
Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供的许多特性:以及 Bash shell 的改写 ...
- c语言格式大整理
1.C语言中,非零值为真,真用1表示:零值为假,假用0表示. 2.转义字符参考: \a 蜂鸣,响铃 \b 回退:向后退一格 \f 换页 \n 换行 \r 回车,光标到本行行首 \t 水平制表 \v 垂 ...
- eclipse 快捷键设置
“window→Preferences→General→Keys→你想设置的快捷键" PS(Postscript)我常用的快捷键: 撤销 Undo Ctrl+Z 还原 Redo ...
- mysql 必须掌握的工具pt-query-digest安装
mysql 必须掌握的工具pt-query-digest 古人云:工欲善其事,必先利其器.作为一名优秀的mysql dba也需要有掌握几个好用的mysql管理工具,所以我也一直在整理和查找一些能够便于 ...
- Linux命令-统计文件中的字节数、字数、行数:wc
Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项]文件... 2.命令功能: 统计指定文件中的字节数. ...
- RabbitMQ消息队列(二):"Hello, World"[转]
2. Sending 第一个program send.cs:发送Hello world 到queue.正如我们在上篇文章提到的,你程序的第9行就是建立连接,第12行就是创建channel,第14行创建 ...
- 【js】with 语句
with 语句 为语句设定默认对象. with (object) statements 参数 object 新的默认对象. statements 一个或多个语句,object 是该语句的默认对象. ...
- 摘:分配和释放BSTR的内存
当您创建 BSTR的并将它们使用以避免内存泄漏的它们在COM对象之间时,必须注意在将内存的. 当 BSTR 在接口中保持,必须释放其内存,当处理它. 但是,那么,当 BSTR ...
- Form_Form Builder的常用变量(概念)
2014-12-30 Created By BaoXinjian