20、设计模式解析:观察者、状态与访问者模式

设计模式解析:观察者、状态与访问者模式

1. 观察者模式

1.1 注册观察者

在涉及观察者(Observer)和可观察对象(Observable)的场景中,需要决定如何将观察者注册到可观察对象上。注册方式有多种:
- 通过中介或客户端以编程方式实现。
- 由观察者自行注册,但这种情况下观察者需要有访问可观察对象的途径。
- 依据某些配置信息进行注册。

在许多情形下,一个观察者可能想要观察多个可观察对象,所以可观察对象和观察者之间的接口应具备足够的灵活性以支持这一需求。当在应用程序的某个区域内不再引用某个观察者时,也需要将其从可观察对象中移除,否则该观察者将无法被垃圾回收。另外,在通知机制中,状态信息可以选择提供给观察者,有时候仅仅通知观察者可观察对象的状态发生了改变就足够了。

1.2 具体示例:股票价格监控应用

以一个简单的股票价格监控应用(Share Price Watcher)为例,该应用用于监控特定股票(如谷歌、IBM 或苹果)的价格。当股票价格发生变化时, SharePriceWatcher 会通知所有关注该变化的对象。

在这个实现中, SharePriceWatcher 是可观察对象, Logger 是观察者,每当价格改变时, Logger 都会收到通知。可观察对象特质( Observable trait )定义了 changed 方法,混入该特质的类可以调用此方法来通知所有观察者可观察对象的状态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值