Javascript中发布/订阅模式的一个简单示例

Javascript中发布/订阅模式的一个简单示例
上一次我们研究观察者模式时,许多文章说它也被称为订阅发布(发布/订阅模式),但是Javascript设计模型中这两个模型之间有一些差异:

1种观察模式要求希望接收主题通知的观察者必须订阅内容更改事件。

2。订阅/发布模式使用主题/事件通道,这是用户和出版商之间。事件系统允许代码定义应用程序特定的事件,可以将自定义的参数,和自定义参数包含用户需要的价值,目的是为了避免用户和出版商之间的相关性。

与观察者模型不同,它允许任何订阅者执行适当的事件处理程序来注册和接收发布者发出的通知。

嗯,没有意识到,以下是我的理解:

在1。观察者模式,目标对象负责维护观察者。发布/订阅模式中的发布者不关心订阅服务器,只负责丢失消息

2。在观察者模式,观察者应该提供一个接口,然后调用接口保持目标和目标状态一致,当目标对象的状态发生变化,所有的观察者都有一个统一的接口(例如,写在前面的文章中,更新的方法和大家的方法称为本名)。在发布/订阅模式,用户事件的触发是不是基于这样的一个接口,但用户触发通过听特定的消息,它一般包含名称和用户要求的参数,它是可以理解的,用户听不发布,但消息池,只要作为信息库的相关信息,即触发E无论消息是谁,发布者和订阅者都是解耦的。

下面是js中发布/订阅模式的实现,并复制粘贴控制台中并进行测试。

复制代码代码如下所示:

Var PubSub =(函数(){()

var

主题= },

subuid = - 1;

新闻发布

q.publish =功能(话题,args){

如果(!主题{ } };返回;}

var主题= {主题},

subs.length len =;

而(镜头){

潜艇{ }函数len(话题,args);

}

返回此;

};

订阅/事件

q.subscribe =功能(主题、功能){

主题{主题}主题} {主题};

VaR令牌=(+ + subuid)ToString();

主题{

令牌,

功能:功能

});

返回令牌;

};

回问;

取消订阅将不写入,遍历主题,然后保存以前的返回令牌,删除指定的元素。

});

事件

VaR logMsg =功能(主题、数据){

console.log(记录:+主题+:+数据);

}

监听指定的消息 / / 'msgname

VaR子= pubsub.subscribe('msgname,logMsg);

msgname ' / /新闻发布

Pubsub.publish('msgname,你好世界);

没有人听to'msgname1'news /释放

Pubsub.publish ('anotherMsgName','me too!);

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部