[HeadFirst]观察者模式 - 老王跳灰机的故事

写博客,看博客,要的是直接进入主题,不要太多的前戏,否则读者看着看着就没了兴趣。

所以直接看设计模式-观察者模式的图示介绍:

 

所谓的主题,即被观者的对象,当这个对象发生变化的时候,对象发出通知,那么订阅了这个主题的订阅者,会接受到通知并进行相关的操作。订阅者可以订阅多个主题,一个主题也可以被多个订阅者订阅。

 

注意的是,这个地方的所谓的主题、订阅者、通知,是否是和notify相同呢?答案的非也,notify是esb的一种,涉及到消息中心、发送者、订阅者三个方面,而且消息的发送者是不区分数据是否变更的,而是一旦有需要,就直接发送消息,不同的内容的消息,订阅者订阅特定类型的消息进行处理。

 

 

这里我们举一个例子,老王开灰机,灰机的前翅子如果参数异常,就让老王跳机。那么看看代码吧:

 

飞机的前翅子,也就是被观察的对象:

 

注意其中的参数变化的时候,是手动触发发送通知的!

 

飞机的平衡机,也就是观察者

接收到消息之后,先判断是哪种类型,因为可能订阅者订阅了多种主题。

 

测试代码:

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值