观察者模式 触发联动
当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化
如果在更改一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该 有多少对象需要被连带改变
当一个对象必须通知其他的对象,但是你又希望这个对象和其他的被通知的对象是松散耦合的
当一个抽象模型有两个方面,其中一个方面的操作依赖于另一个方面的状态变化
如果在更改一个对象的时候,需要同时连带改变其他的对象,而且不知道究竟应该 有多少对象需要被连带改变
当一个对象必须通知其他的对象,但是你又希望这个对象和其他的被通知的对象是松散耦合的
2015-06-22
命名建议
目标接口 Subject
观察者接口 Observer
观察者接口的更新方法 update
触发通知的时机先改数据后通知
观察者模式调用顺序 准备阶段1创建目标对象2创建观察者对象3相目标对象注册观察者对象
运行阶段1改变目标对象的状态1.1通知所有注册地观察者对象进行相应的处理1.1.1回调目标对象,获取相应数据
通知的顺序 观察之间是平行的
目标接口 Subject
观察者接口 Observer
观察者接口的更新方法 update
触发通知的时机先改数据后通知
观察者模式调用顺序 准备阶段1创建目标对象2创建观察者对象3相目标对象注册观察者对象
运行阶段1改变目标对象的状态1.1通知所有注册地观察者对象进行相应的处理1.1.1回调目标对象,获取相应数据
通知的顺序 观察之间是平行的
2015-06-22
@Wi 如果像你说的对每个天气内容作为一个订阅者的话,那这样的设计会不会使得订阅者太多,造成结构的复杂性值得考虑
例如天气的情况会有很多种
不单是 下雨,晴天
还有下雪 冰雹 高温 台风 等等等等的情况
例如天气的情况会有很多种
不单是 下雨,晴天
还有下雪 冰雹 高温 台风 等等等等的情况
2015-06-19
@Wi 观察者模式 是 一个订阅者 对应多个观察者, 订阅者是一个服务,他可以是天气预报,也可以是别的服务,
而在天气预报这个服务内可以发送各种不同的天气内容
如果像你那样将每个天气内容都作为一个订阅者的话,一对一的进行观察的话只是一对多的一种特例
如何使用需要根据具体的场景灵活使用
而在天气预报这个服务内可以发送各种不同的天气内容
如果像你那样将每个天气内容都作为一个订阅者的话,一对一的进行观察的话只是一对多的一种特例
如何使用需要根据具体的场景灵活使用
2015-06-19