经典的发布订阅者模式

     2022-10-10     390

关键词:

function Pubsub() {
this.handlers = {};
}
Pubsub.prototype = {
on: function (eventType, handler) {
var self = this;
if (!(eventType in self.handlers)) {
self.handlers[eventType] = [];
}
self.handlers[eventType].push(handler)
},
emit: function (eventType) {
var self = this;
var handlerArgs = Array.prototype.slice.call(arguments, 1);
for (var i = 0; i < self.handlers[eventType].length; i++) {
self.handlers[eventType][i].apply(self, handlerArgs)
}
return self;
},
off: function (eventType, handler) {
var currentEvent = this.handlers[eventType];
var len = 0;
if (currentEvent) {
len = currentEvent.length;
for (var i = len - 1; i >= 0; i--) {
if (currentEvent[i] === handler) {
currentEvent.splice(i, 1)
}
}
}
return this;
}
}

var pubsub = new Pubsub();
var callback = function (data) {
console.log(data)
}
pubsub.on(‘A‘, function (data) {
console.log(data + 1)
})
pubsub.on(‘A‘, function (data) {
console.log(data + 2)
})
pubsub.on(‘A‘, callback)
pubsub.emit(‘A‘, ‘参数‘)
pubsub.off(‘A‘, callback)
pubsub.emit(‘A‘, ‘二参数‘)

设计模式-发布-订阅者模式(代码片段)

1、发布-订阅者设计模式定义定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知观察者模式和发布订阅模式区别观察者模式是由具体目标(发布者/被观察者)调度的,而发... 查看详情

eventbus发布-订阅模式(使用代码实现发布-订阅模式)(代码片段)

...章目录一、发布-订阅模式二、代码实现发布-订阅模式1、订阅者接口2、订阅者实现类3、发布者4、调度中心5、客户端一、发布-订阅模式发布订阅模式:发布者Publisher:状态改变时,向消息中心发送事件;订阅者Subscriber:到消息中心订... 查看详情

发布-订阅者模式(观察者模式)(代码片段)

发布订阅者模式还有一些好的列子应用可以看看javascript设计模式与开发实践这本书!!!!!一、发布订阅模式是什么发布订阅者模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,... 查看详情

发布订阅模式和委托

观察者模式/发布订阅模式:发布者有一个接口,订阅者也有一个接口。发布者中有一个列表 List<Observer>mList=newArrayList<>();,该列表中存储着所有订阅此发布的订阅者的信息,订阅者接口中有一个方法update,任何订阅... 查看详情

发布-订阅模式

...执行了。在传统的发布-订阅模式中,如Java,通常需要把订阅者对象自身当成引用传入发布者对象中,而在JavaScript中,使用回调函数的形式来代替订阅者。nodejs中的on 查看详情

发布/订阅模式

.../Sub模式包含三个角色主题(Topic),发布者(Publisher),订阅者(Subscriber)。多个发布者将消息发送到Topic,系统将这些消息传递给多个订阅者。Pub/Sub的特点每个消息可以有多个消费者发布者和订阅者之间有时间上的依赖性。针... 查看详情

发布订阅模式的理解

...态发生改变时,会自动通知已经订阅过的对象。发布者与订阅者耦合性降低,发布者只管发布一条消息出去,它不关心这条消息如何被订阅者使用,同时,订阅者只监听发布者的事件名,只要发布者的事件名不变,它不管发布者... 查看详情

观察者模式vs发布-订阅模式

...行记录。然而,在发布订阅模式中,发布者(Publisher)和订阅者(Subscriber)不知道对方的存在。它们只有通过消息代理(信息中介)进行通信。2.在发布订阅模式中,组件是松散耦合的,正好和观察者模式相反。3.观察者模式大... 查看详情

观察者模式与发布订阅模式的区别

...)是一种消息模式,它有 两个参与者 : 发布者和订阅者 。发布者向 某个信道发布一条消息,订阅者绑定这个信道,当有消 查看详情

发布-订阅者(观察者模式)以及代理模式

...态发生改变时,会自动通知已经订阅过的对象。发布者与订阅者耦合性降低,发布者只管发布一条消息出去,它不关心这条消息 查看详情

发布-订阅模式

发布-订阅模式       发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。JavaScript开发中我们一般用事件模型来代替传... 查看详情

从发布-订阅模式到vue响应系统(代码片段)

...。所以上面就是一个发布订阅模式的简单例子。购房者(订阅者)订阅房源信息,售楼处(发布者)发布新房源消息给购房者(订阅者),购房者(订阅者)接收到消息后作出相应的反应。适用性发布订阅模式可以广泛的应用于... 查看详情

发布-订阅模式

1.什么是发布订阅模式发布订阅模式又叫观察者模式,他是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变,所有依赖他的对象都将得到通知。在javascript开发中,我们一般用事件模型来替代传统的发布-订阅模... 查看详情

javascript发布订阅pubsub模式

首先使用数组缓存订阅者订阅的消息,当订阅者订阅消息的时候,把订阅的消息push到指定消息的队列中,当发布者发布消息的时候,我们遍历执行push到指定消息队列中的回调事件。varPubsub=(function(){vareventObj={};return{subscribe:functio... 查看详情

设计模式发布订阅

...//blog.csdn.net/calmreason/article/details/50895191主要是发布者存储订阅者的指针发布时依次NOTIFY发送信息订阅者在订阅时将自己加入到发布者的容器中使用C++11的智能指针需要注意智能指针的weakshared的转换以及订阅者析构后的对应操作代... 查看详情

[设计模式]观察者模式与订阅模式

  在读《设计模式》时,观察者模式一直理解为订阅者/发布者,其实这两种模式还是有差异的。  一、观察者模式    相关概念:目标和观察者是基类,目标提供维护观察者的一系列方法,观察者提供更新接口。具体... 查看详情

设计模式-观察者模式实现

...  已一对多的方式,通过制定一个主题,使多个不同的订阅者能时时的接收到最新的消息。 定义一个主题: 主题中处理基本的添加/删除订阅者 消息发布还加入一个change锁 可以负责消息发布的控制,将灵活的... 查看详情

观察者模式vs发布订阅模式

...三者的插足!!!我还是先介绍一下他们是谁吧Subscriber订阅者Publisher发布者Broker插足者(第三者)看图看图对的小三就是这么堂而皇之的出现在中间了。不他出现的恰到好处给无聊的生活平添了很多的乐趣。为啥呢??  ... 查看详情