发布订阅、观察者模式的区别是什么

发布订阅、观察者模式的区别是:发布订阅模式相比观察者模式多了个事件通道,事件通道作为调度中心,管理事件的订阅和发布工作,彻底隔绝了订阅者和发布者的依赖关系。即订阅者在订阅事件的时候,只关注事件本身,而不关心谁会发布这个事件。

一、观察者模式

观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知,并自动更新。观察者模式属于行为型模式,行为型模式关注的是对象之间的通讯,观察者模式就是观察者和被观察者之间的通讯。

观察者模式有一个别名叫“发布-订阅模式”,或者说是“订阅-发布模式”,订阅者和订阅目标是联系在一起的,当订阅目标发生改变时,逐个通知订阅者。我们可以用报纸期刊的订阅来形象的说明,当你订阅了一份报纸,每天都会有一份最新的报纸送到你手上,有多少人订阅报纸,报社就会发多少份报纸,报社和订报纸的客户就是上面文章开头所说的“一对多”的依赖关系。

二、订阅-发布模式

其实24种基本的设计模式中并没有发布订阅模式,上面也说了,他只是观察者模式的一个别称。

但是经过时间的沉淀,似乎他已经强大了起来,已经独立于观察者模式,成为另外一种不同的设计模式。

在现在的发布订阅模式中,称为发布者的消息发送者不会将消息直接发送给订阅者,这意味着发布者和订阅者不知道彼此的存在。在发布者和订阅者之间存在第三个组件,称为调度中心或事件通道,它维持着发布者和订阅者之间的联系,过滤所有发布者传入的消息并相应地分发它们给订阅者。

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

发布订阅模式相比观察者模式多了个事件通道,事件通道作为调度中心,管理事件的订阅和发布工作,彻底隔绝了订阅者和发布者的依赖关系。即订阅者在订阅事件的时候,只关注事件本身,而不关心谁会发布这个事件;发布者在发布事件的时候,只关注事件本身,而不关心谁订阅了这个事件。

观察者模式有两个重要的角色,即目标和观察者。在目标和观察者之间是没有事件通道的。一方面,观察者要想订阅目标事件,由于没有事件通道,因此必须将自己添加到目标(Subject) 中进行管理;另一方面,目标在触发事件的时候,也无法将通知操作(notify) 委托给事件通道,因此只能亲自去通知所有的观察者。

来源:https://blog.csdn.net/weixin_44786530/article/details/127091896

延伸阅读

项目管理工具的作用

项目管理工具是帮助项目团队有效计划、执行和管理项目的软件或系统。它们在提高项目执行效率,提高团队合作效果,及时识别并解决问题,以及确保项目成功实施中起到了关键作用。以下是项目管理工具的主要作用:

  1. 任务管理:项目管理工具允许您创建,分配和跟踪项目任务。你可以设置任务的优先级,截止日期,负责人等信息,以确保每个任务都得到适当的关注。
  2. 时间管理:大多数项目管理工具提供了日历或甘特图功能,可以帮助你规划项目时间表,跟踪关键里程碑,以及监控项目进度。
  3. 团队协作:项目管理工具通常提供了便于团队成员之间进行沟通和协作的功能,例如文件共享,讨论板,实时聊天等。
  4. 资源管理:通过项目管理工具,你可以更有效地管理和分配项目资源,如人力,设备,预算等。
  5. 风险和问题管理:项目管理工具可以帮助你识别,跟踪和解决项目中的风险和问题。
  6. 报告和分析:项目管理工具通常会提供强大的报告和分析功能,帮助你了解项目的当前状态,以及识别可能的问题和改进机会。

使用项目管理工具,可以提高项目管理的效率和效果,减少人为错误,提升团队合作,帮助你更好地达成项目目标。

文章标题:发布订阅、观察者模式的区别是什么,发布者:E.Z,转载请注明出处:https://worktile.com/kb/p/53565

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年5月31日
下一篇 2023年5月31日

相关推荐

  • 员工激励方式有哪些方面

    员工激励方式有两个方面:一、货币激励;二、非货币激励。其中货币激励包括:1、奖金;2、股份;3、佣金支付;4、加薪;非货币激励包括:1、认可;2、奖励;3、团队经历;4、专业技能学习。 一、货币激励 1、奖金 名列前茅可以支付特别奖金,这是完成项目或有效工作的意外奖金。当个人或团队达到特定目标时,提…

    2022年11月15日
    24800
  • 哪些语言比C更适合编程入门

    比C更适合编程入门的语言有:1、Python;2、JavaScript;3、Java;4、Ruby。当我们讨论名列前茅门编程语言以及哪一门语言更加容易快速上手时,很容易会提到Python,它是一种面向对象、解释型计算机程序设计语言,Python语法简洁而清晰,具有丰富和强大的类库。 1、Python…

    2023年2月6日
    11900
  • 进度管理的意义是什么

    进度管理的意义有以下几点:1、进度管理对全局管理有重要意义;2、有效的进度管理能提高项目管理水平;3、合理的进度管理能提高经济效益。进度管理通过对影响进度的匀速进行全面分析、预测和控制,及时发现各种问题并解决问题,确保工程可以按时交付。 1、进度管理对全局管理有重要意义 关注项目进度,过程中能及时发…

    2022年11月30日
    1.1K00
  • 如何用project做进度计划

    使用project做进度计划的步骤:1、启动Project;2、打开一个空白的项目文件;3、设置项目信息;4、设置项目选项;5、选择项目视图;6、显示项目摘要任务;7、添加任务;8、保存项目进度等。启动Project的方法不同,具体取决于 Windows 的版本。 1、启动Project 要从桌面启…

    2023年2月24日
    1.1K01
  • 项目管理开发平台哪家好

    项目管理开发平台有:一、PingCode;二、Worktile;三、Asana;四、Trello;五、Wrike。PingCode是国内软件研发项目管理软件。功能以及解决的问题有:能够支持看板、敏捷等多种项目的管理;管理团队目标,监控单/多项目的进度、管理计划分配资源。 一、PingCode Pin…

    2023年4月30日
    1400
  • 编编程软件的软件是用什么编的

    编程软件通常是使用高级语言或脚本语言进行开发的。常见的编程软件及其开发语言有:Visual Studio的主要开发语言是C#、VB.NET等。Eclipse的主要开发语言是Java。PyCharm的主要开发语言是Python。Sublime Text的主要开发语言是Python。 编程软件通常是使用…

    2023年2月28日
    10100
  • 如何做一个合格的项目经理

    合格的项目经理要具备:一、目标定位能力;二、项目管理知识;三、通用管理知识;四、相关专业知识;五、计划能力;六、组织能力;七、环境适应及人际关系能力;八、责任心。目标定位能力指项目为了达到预期的结果而必须完成一些指标,如质量、工期等。 一、目标定位能力 目标定位能力指项目为了达到预期的结果而必须完成…

    2023年3月30日
    5900
  • okr怎么做

    做okr的过程:1、制定“O”;2、梳理”KR“;3、跟进、辅导和复盘OKR的实施和落地。制定”O“,主要包括了三个方面:首先是公司整体的目标O;接着是综合公司整体目标和部门主要职责而确定下来的部门的目标O;最后是每个员工个人的目标O。 1、制定“O” 在OKR的语境下,O由主要包括了三个方面: 其…

    2023年2月23日
    7300
  • erp实施应注意哪些问题

    erp实施应注意以下问题:1、可操作性是否具备简单实用特性;2、ERP系统速度是否更快;3、ERP系统是否具备灵活性;4、是否具备可扩展性和二次开发;5、与现有的业务是否匹配。可操作性是否具备简单实用特性对员工来说很重要,对ERP的普及推进有积极的作用。 1、可操作性是否具备简单实用特性 对于企业的…

    2022年12月31日
    36400
  • 底层的搜索引擎有哪些

    底层的搜索引擎有:1、Google;2、bing;3、Yahoo!;4、Baidu;5、Yandex;6、DuckDuckGo。谷歌之所以能成为较受欢迎和信任的搜索引擎,取决于其搜索结果的质量。谷歌正在使用复杂的算法向用户展示最准确的结果。 1、Google 不用说,谷歌作为搜索引擎巨头,在搜索领域…

    2023年1月15日
    17900

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部