JS模式之简单的订阅者和发布者模式完整实例

   本文实例讲述了JS模式之简单的订阅者和发布者模式。分享给大家供大家参考。具体如下:

  ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>parten</title>
</head>
<body>
<script>
var singletonTest = SingletonTest.getInstance({
pointX : 5
});
console.log(singletonTest.pointX);
//easy_Observer_model;
function ObserverList(){
this.observerList = [];
};
ObserverList.prototype.Add = function(obj){
return this.observerList.push(obj);
};
ObserverList.prototype.Empty = function(){
this.observerList = [];
};
ObserverList.prototype.Count = function(){
return this.observerList.length;
};
ObserverList.prototype.Get = function(index){
if(index>-1 && index<this.observerList.length)
return this.observerList[index];
};
ObserverList.prototype.Insert = function(obj,index){
var pointer = -1;
if(index == 0){
this.observerList.unshift(obj);
pointer = index;
}else if(index == this.observerList.length){
this.observerList.push(obj);
pointer = index;
};
return pointer;
};
ObserverList.prototype.IndexOf = function(obj,startIndex){
var i = startIndex, pointer = -1;
while(i < this.observerList.length){
if(this.observerList[i] === obj){
pointer = i;
};
i++
};
return pointer;
};
ObserverList.prototype.RemoveIndexAt = function(index){
if(index === 0){
this.observerList.shift();
}else if(index === this.observerList.length-1){
this.observerList.pop();
};
return index;
};
function extend(obj,extension){
for(var key in obj){
extension[key] = obj[key];
}
};
//
function Subject(){
this.observers = new ObserverList();
};
Subject.prototype.AddObserver = function(obj){
this.observers.add(obj)
};
Subject.prototype.RemoveObserver = function(observer){
this.observers.removeIndexAt( this.observers.IndexOf(observer,0) );
};
Subject.prototype.Notify = function(context){
var observerCount = this.observers.count();
for(var i=0; i<observerCount; i++){
this.observers.Get(i).update(context);
};
}
//Pubsub//subscribe
var Pubsub = {};
(function(q){
var topics = [],
subUid = -1;
q.publish = function(topic,args){
if(!topics[topic]){
return false;
};
var subscribers = topics[topic],
len = subscribers ? subscribers.length : 0;
while(len--){
subscribers[len].func(topic,args);
}
return this;
};
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; i<topics[m].length; i++){
if(topics[m][i].token === token){
topics[m].splice(i,1);
return token;
}
}
};
};
return this;
}
})(pubsub);
</script>
</body>
</html>

  希望本文所述对大家的javascript程序设计有所帮助。

时间: 2024-08-30 23:21:53

JS模式之简单的订阅者和发布者模式完整实例的相关文章

JS+CSS实现鼠标经过弹出一个DIV框完整实例(带缓冲动画渐变效果)_javascript技巧

本文实例讲述了JS+CSS实现鼠标经过弹出一个DIV框效果.分享给大家供大家参考,具体如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">

JS实现文字向下滚动完整实例

 这篇文章主要介绍了JS实现文字向下滚动的方法,以一个完整实例形式详细分析了html页面布局.css样式及对应的js滚动功能实现技巧,需要的朋友可以参考下     本文实例讲述了JS实现文字向下滚动的方法.分享给大家供大家参考.具体实现方法如下:   代码如下: <!DOCTYPE> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ut

JavaScript中发布/订阅模式的简单实例

 1.Observer模式要求希望接收到主题通知者的观察者必须订阅内容改变的事件. 2.Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于订阅者和发布者之间.该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值.其目的是避免订阅者和发布者产生依赖关系. 与Observer模式不同之处在于它允许任何订阅者执行适当的事件处理程序来注册和接收发布者发出的通知. 好吧,不明觉厉.下面是我的理解: 1.观察者模式中,目标对象负责维护观

JavaScript中发布/订阅模式的简单实例_javascript技巧

上次研究观察者模式,很多文章说它也叫Subscribe/Publish(发布/订阅模式).可在<Javascript设计模式>一书中,这两种模式还是有些区别的.书中原话如下: 1.Observer模式要求希望接收到主题通知者的观察者必须订阅内容改变的事件. 2.Subscribe/Publish模式使用了一个主题/事件通道,这个通道介于订阅者和发布者之间.该事件系统允许代码定义应用程序的特定事件,该事件可以传递自定义参数,自定义参数包含订阅者所需要的值.其目的是避免订阅者和发布者产生依赖关系.

js实现简单实用的AJAX完整实例_AJAX相关

本文实例讲述了js实现简单实用的AJAX的方法.分享给大家供大家参考,具体如下: //版权归属 WUJXPING //ajax 1.2 //更新2012-2-20 //1.异步数据加载可以进行加载方式get,post的设定 //2.异步同步模式的属性设定 //3.数据加载自动超时设置 //4.***数据加载事件的添加,通过事件可以进行服务器数据的实时处理 //5.增加回调函数中用户自定义参数this.e //6.增加ajax反复提交控制,只需将ajax对象定义为全局变量,每次提交都会进行等待上次

猪八戒的威客运营模式:简单

一.背景介绍   (一)行业背景       2007年中国互联网市场最热门的词汇是什么?不是流氓软件,不是WAP,也不是搜索,而是威客!2006年7月,赛迪顾问发布了<中国威客 (Witkey)商业模式及投资前景研究报告>.报告显示,经过2005-2006年一年的发展,中国威客模式市场用户规模达到60万人,预计2007年这一数字将激增到900万人. 如果你已经错过了博客.播客等互联网浪潮,甚至连时下最火的威客都一无所知,那么,你注定会变成互联网时代的一个过客!                

网站运营:赢利模式越简单越容易成功!

网站运营 赢利模式越简单越容易成功! 大部分人在策划网站盈利模式的时候,总是喜欢把自己网站赢利模式想的很怪很繁琐,因为他们认为赢利模式越复杂越好.其实,这是一个严重错误的概念. <?XML:NAMESPACE PREFIX = O /> 根据多年的实践和研究发现:赢利模式越简单就越容易成功! l         Google和百度等搜索引擎的模式很简单,卖广告: l         网络游戏的赢利模式俄很简单,卖点卡或者卖装备: l         dangdang和joyo这类电子商务网站的

如何用node.js实现一个简单的web服务器

node.js实现web服务器还是比较简单的,我了解node.js是从<node入门>开始的,如果你不了解node.js也可以看看! 我根据那书一步一步的练习完了,也的确大概了解了node.js,不过里面写的路由的地方总感觉不方便,十一放假最后一天,试着写了个简单的web服务器,现在分享记录于此! http模块已提供了基本功能,所以我主要解决两个问题,1是静态资源的处理,2是动态资源的路由. 静态资源在node.js里的意思是不变的,如图片.前端js.css.html页面等. 动态资源我们一般

js实现非常简单的焦点图切换特效实例

  这篇文章主要介绍了js实现非常简单的焦点图切换特效,是一个非常简单的js焦点图切换效果,涉及javascript操作鼠标事件与图片的相关技巧,需要的朋友可以参考下 这是一个非常非常简单的焦点图(更像滑动门),可供初学者借鉴参考 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47