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

你见过的最有趣的设计模式是什么?

最有趣的设计模式之一是观察者模式(Observer pattern)。该模式定义了一对多的依赖关系,使得当一个对象状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。

概念

观察者模式定义了一个主题和一组观察者。主题负责维护观察者的列表,在发生变化时通知观察者。观察者则负责接收主题的通知并进行相应操作。

分类

观察者模式属于行为型模式。

优势

  1. 降低了对象之间的耦合度:观察者模式将主题和观察者之间的双向依赖转换为单向依赖,使得主题和观察者可以独立地改变。
  2. 灵活性强:观察者可以根据自身需求选择是否需要加入或退出观察者列表。
  3. 多线程支持:主题与观察者可以分别位于不同的线程,确保主题状态的安全变化。

应用场景

  1. 当一个主题对象依赖多个观察者对象,而在主题对象发生状态变化时,通知它们更新。
  2. 实时数据分析的场景:数据源作为主题,多个数据分析服务作为观察者,数据源发生变更后通知多个分析服务。

推荐的腾讯云相关产品

腾讯云分布式消息队列——Apache Pulsar,提供了一站式的分布式消息服务,涵盖存储、查询、消费、通知等功能,具备高可用、高吞吐、高可靠等特性,广泛应用于消息队列和事件驱动系统等场景。推荐的产品介绍链接:腾讯云-Apache Pulsar

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

相关·内容

java观察者模式

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

02
领券