写博客,看博客,要的是直接进入主题,不要太多的前戏,否则读者看着看着就没了兴趣。
所以直接看设计模式-观察者模式的图示介绍:
所谓的主题,即被观者的对象,当这个对象发生变化的时候,对象发出通知,那么订阅了这个主题的订阅者,会接受到通知并进行相关的操作。订阅者可以订阅多个主题,一个主题也可以被多个订阅者订阅。
注意的是,这个地方的所谓的主题、订阅者、通知,是否是和notify相同呢?答案的非也,notify是esb的一种,涉及到消息中心、发送者、订阅者三个方面,而且消息的发送者是不区分数据是否变更的,而是一旦有需要,就直接发送消息,不同的内容的消息,订阅者订阅特定类型的消息进行处理。
这里我们举一个例子,老王开灰机,灰机的前翅子如果参数异常,就让老王跳机。那么看看代码吧:
飞机的前翅子,也就是被观察的对象: