首页 > 编程知识 正文

设计模式最适合用于发布订阅消息模型,发布和订阅模式

时间:2023-05-06 15:29:20 阅读:178194 作者:5000

根据导入的人不同,面试中会询问“xsdbks模式和发布订阅模式的区别是什么? 你可能曾被问到“。 其实一开始我还以为这两种设计模式是一样的,但在称呼上有一些不同。 后来,随着学习的深入,我发现两者还有区别。

我想大多数人都会同意xsdbks模式是最好的学习方式。 因为,我们可以从字义上知道它主要是做什么的。

在这里列举两个简单易懂的例子:

1 .当时,90后的小时候,我们没有手机。 悠闲地上午,我们各自出去玩,临出门前和妈妈说是否回家吃午饭。 快到中午的时候,开始关注“午饭好吗,应该回家吃饭吗”。 没有手机怎么样? 跑回去看。 妈妈说,饭还没开始做。

在那里再出去一点。 妈妈说饭很快就好了,洗手准备吃饭。 于是,咕咕叫着的肚子变得很高兴。 后来,手机成了必需品,这样的烦恼就没有了。 中午时分,妈妈打来电话,用不温柔的声音喊道:“还没吃饭,快回来。”

xsdbks模式也是如此。 如果有多用户(我们去玩),就会观察一件事(饭做好了没有)的变化。 使用xsdbks模式(手机),我们有时不需要回家确认,事情变了)饭做好了)的时候,妈妈会方便地通知所有在意午饭的我们。

概括以上问题,应用xsdbks模式有几个因素。 xsdbks (妈妈,xsdbks ) )、外出中的我们)、事件)、妈妈有没有做饭)、xsdbks维护的xsdbks列表)、妈妈知道谁回家吃饭

从上述实例来看,合伙人不知道是否知道隐藏的地方。

一、xsdbks并非一成不变。并不是每天都是所有人回家吃午饭,只有提前告知老妈要回家吃午饭的人才会接到电话。因为xsdbks的可变性,需要被xsdbks维护一个列表。

二、xsdbks模式可以便捷的完成目标。不需要xsdbks不停的轮询查看事件变化,也不需要被xsdbks多次询问xsdbks意愿。只需要xsdbks提前加入或离开列表,便可以由被xsdbks准确的进行事件通知。 说起来,微信订阅号便是xsdbks模式的一种实现。感兴趣的人订阅公众号,在公众号有新的文章时推送给所有订阅人。

2 .假设你正在找一份软件工程师的工作,对“香蕉公司”感兴趣。 所以你联系了他们的HR,给了他你的联系电话。 他保证有什么空缺会通知你。 这里有几个和你一样感兴趣的候选人。 所以,职位空缺大家都知道。 如果你答应他们的通知,他们会联系你面试。

所以,以上与“xsdbks模式”有什么关系呢? 这里的“香蕉公司”是Subject,用于维护Observers (和你一样的候选人),并为部分event通知(notify ) xsdbks。

xsdbks模式是软件设计中的对象,它维护依赖关系列表,并在任何状态发生更改时自动通知您。

你看,维基百科的定义也不是那么难吧?

因此,如果要在软件或APP应用程序中实现xsdbks模式,可以遵循如上图所示的流程。

在xsdbks发行版模式中,订阅设计模式中的Subject类似于发布者(Publisher ),xsd bks (observer )可以完全视为订阅者。 就像当subject通知xsdbks时,一个发行者会通知他的订阅者一样。 因此,许多书籍和文章都使用“发布-订阅”的概念来描述xsdbks的设计模式。 但是,这里还有另一种人气模特。 这被称为发布订阅设计模型。 其概念与xsdbks模式非常相似。 最大的不同在于:

在分发-订阅模型中,消息的来源称为发布者(publishers ),消息不会直接发送到特定的收件人(订阅者)。

意思是发信者和订阅者不知道对方的存在。 需要被称为信息中介的第三方组件。 它将订阅者和发行者连接起来,过滤并分配所有输入的消息。 这意味着发布-订阅模型用于处理各种系统组件的信息交换,而无需知道对方的存在。

那么,是怎么过滤信息的呢? 实际上,这里有几个过程。 最常见的方法是基于主题和基于内容。 那么,就到此为止。 如果你感兴趣,请在维基百科上知道。

所以,我在下图中展示了这两种模式最重要的区别:

感觉到了吗?

让我们简单总结一下这些差异。

在xsdbks模式下,xsdbks知道Subject,Subject继续记录xsdbks。 但是,在发布订阅模型中,发布者和订阅者不知道对方的存在。 它们仅通过消息代理进行通信。 在发布订阅模式下,组件是松散耦合的,与xsdbks模式相反。 xsdbks模式经常是同步的,例如,当触发事件时,Subject将调用xsdbks的方法。 发布-订阅模式经常是异步的(使用消息队列)。 •xsdbks模式必须在单个APP应用程序地址空间中实现,但发布-订阅类似于交叉APP模式。

虽然有这些差异,但有些人可能会说,由于概念上相似,发布订阅模型是xsdbks模型的变异。

最后我的内容如果对你有启发的话,请关注。 或者看了再去。 下一篇将通过实际代码实现这两种设计模式。

原文https://MP.weixin.QQ.com/s/ms 83 zbbj 80 aiz0qkhf 3y ca

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。