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 首先我们来面 ...
随机推荐
- raise语句
# -*- coding: utf-8 -*- #python 27 #xiaodeng #Python学习手册 868 #raise语句 res=[IndexError,TypeError] #ra ...
- 用JSON-server模拟REST API
来源于: 用JSON-server模拟REST API(一) 安装运行 用JSON-server模拟REST API(二) 动态数据 用JSON-server模拟REST API(三) 进阶使用 在开 ...
- 配置eclipse插件
http://blog.csdn.net/zhangyabinsky/article/details/7043435
- jquery添加用户 事例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- iOS10 完美降级 iOS9.3.2,保留全部数据
本篇文章由:http://xinpure.com/downgrade-ios10-perfect-ios9-3-2-retention-of-all-data/ iOS 10 Beta版尝鲜 前段时间 ...
- hdu--DFS
DFS Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submiss ...
- .NET CORE WebApi Post跨域提交
参考博客:https://www.cnblogs.com/chongyao/p/8652743.html 搭建一个 .NET CORE 的 WebApi 想前后端分离, 于是为了简单做了个demo站点 ...
- PO_员工主管审批模式详解(设定)
2014-06-03 Created By BaoXinjian
- 总结Codeigniter的一些优秀特性
总结Codeigniter的一些优秀特性 近期准备接手改进一个别人用Codeigniter写的项目.尽管之前也实用过CI,可是是全然按着自己的意思写的,没按CI的一些套路.用在公众的项目,不妨按框架规 ...
- CTPN - 训练
源码地址:https://github.com/eragonruan/text-detection-ctpn 该地址提供了 CTPN 的 tf 版本的实现,代码文档写得很详细,issue 里面也帮助解 ...