设计模式之观察者模式

观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象状态改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,`java.util.Observable`类实现了这一模式。该模式的主要优点是能够以集合方式管理观察者,但可能存在的问题是通知过程耗时以及可能引发循环依赖导致系统崩溃。适用场景包括订阅、发布等一对多的通知机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

观察者模式

菜鸟教程 - 观察者模式

五分钟设计模式 - 19迭代器模式

尚硅谷

介绍

观察者模式:对象之间一对多依赖的一种设计方案,一通知多发生变化

订购羊奶,羊奶提供商是一,顾客是多,把羊奶送达到的投放箱中就是通知


优点:

  1. 观察者以集合的方式管理用户(Observer)
  2. 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

缺点:

  1. 如果一个被观察者对象有很多的观察者的话,将所有的观察者都通知到会花费很多时间
  2. 如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃
  3. 观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的,而仅仅只是知道观察目标发生了变化。

原理和角色

被依赖的对象为Subject,依赖的对象为Observer,Subject通知Observer变化(一对多关系中,一通知多变化)

Subject:注册、移除和通知

在这里插入图片描述


应用

Observable类

java.util.Observable实现了Subject的各种方法,其中聚合了一个Vector<Observer>的对象,因此Observable属于被观察者。Observer就是观察者模式中的观察者

不同的是Observable类没有实现Subject接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值