首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将观察者添加到自身或添加到对象中有什么区别?

将观察者添加到自身或添加到对象中是观察者模式中的两种常见实现方式,它们的区别在于观察者的管理方式和通知方式。

  1. 将观察者添加到自身:
    • 概念:在该实现方式中,被观察者对象自身维护一个观察者列表,并提供方法用于添加、删除和通知观察者。
    • 分类:这种方式也被称为基于自身的观察者模式或推模型。
    • 优势:被观察者对象可以更灵活地控制观察者的管理,可以根据需要动态添加或删除观察者。
    • 应用场景:适用于观察者数量较少或观察者之间没有复杂的依赖关系的情况。
  • 将观察者添加到对象中:
    • 概念:在该实现方式中,一个独立的观察者对象(或观察者管理器)负责管理观察者列表,并将自身作为参数传递给被观察者对象,被观察者对象通过该参数来通知观察者。
    • 分类:这种方式也被称为基于对象的观察者模式或拉模型。
    • 优势:被观察者对象与观察者对象解耦,被观察者对象无需关心观察者的具体实现,只需通过观察者管理器来通知观察者。
    • 应用场景:适用于观察者数量较多或观察者之间存在复杂的依赖关系的情况。

推荐的腾讯云相关产品和产品介绍链接地址:

  • 产品名称:腾讯云消息队列 CMQ
    • 产品介绍链接:https://cloud.tencent.com/product/cmq
    • 优势:提供高可靠、高可用的消息队列服务,支持消息的发布与订阅,可用于实现观察者模式中的消息通知机制。
    • 应用场景:适用于需要实现观察者模式的场景,如事件驱动的系统、分布式系统等。

请注意,以上答案仅供参考,具体的实现方式和推荐产品可能因实际需求和情况而有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 设计模式之观察者模式

    今天我继续和大家分享一下设计模式中的知识,今天我们来看一下观察者模式。观察者模式也可以叫发布订阅模式,在实际的场景中有很多时候会遇到这种设计模式。在现实的生活中可以将这种模式理解为报纸订阅服务。也就是说,如果用户订阅了某个报社的报纸,那么报社在收到这个订阅请求后,就会每天把最新的报纸送到用户的手中,如果某一天用户不想继续看这家报社的报纸了,那么就可以取消这个订阅,那么这时报社又收到这个用户取消订阅的请求,然后把这个用户从以后的送报纸用户的名单中删除掉。所以第二天在给其他用户送报纸的时候,就不会继续给这个用户送了。通过上面这个小的例子使我们知道所谓观察者也就是上述例子中的用户,那么这个用户在观察什么呢?答案可显而知,也就是观察订阅这家报社的报纸有没有最新的,如果有最新的报纸,那么报社就会自动将新的报纸,送到自己的手中。那么报纸如果没有最新的呢,也就是没有更新呢?例如在法定假日期间,(并不是所有的报纸都是按天发版的,还有一些报纸法定假日停刊),那么这时用户就不会收到新的报纸了。

    03

    java观察者模式

    像activeMQ等消息队列中,我们经常会使用发布订阅模式,但是你有没有想过,客户端时如何及时得到订阅的主题的信息?其实就里就用到了观察者模式。在软件系统中,当一个对象的行为依赖于另一个对象的状态时,观察者模式就相当有用。如果不使用观察者模式提供的通用结构,而需要我们实现类似的功能,想想我们该如何实现,我们只能在另外一个线程不断监听对象所依赖的状态。当然下面的例子都是基于一个进程内观察者模式的举例,你可能会和我当初一样不解,消息队列中的消费者是通过socket进行通信得到订阅的主题的信息。其实还是一回事的,被观察者(主题)里面会维护一个与它有订阅的所有消费者的连接,当被观察者(主题)里面添加一个消息时,就会调用自身的方法,把该消息通过维持的socket发送给所有订阅的消费者。

    02
    领券