javascript publish/subscribe or observer pattern
生活随笔
收集整理的這篇文章主要介紹了
javascript publish/subscribe or observer pattern
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
?定義
定義一對多的對象封裝,目標(biāo)對象狀態(tài)發(fā)生變化,它所有的接受者都會收到通知并做相應(yīng)的更新。
使用頻率:5/5 最高
概要
觀察者模式,也就是發(fā)布者/訂閱者模式,當(dāng)發(fā)布者發(fā)布一個通知的時候,訂閱者就會收到通知,并調(diào)用自己的更新方法,做些什么事情。這種通知是單向的,只能由發(fā)布者向訂閱者發(fā)布通知。
圖標(biāo)說明
示例代碼
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('百度推送新聞了');
轉(zhuǎn)載于:https://www.cnblogs.com/wylking2000/p/3244010.html
總結(jié)
以上是生活随笔為你收集整理的javascript publish/subscribe or observer pattern的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个好听的汉堡店名字。
- 下一篇: 检查肾功能大概需要多少钱