观察者模式适用于以下情形:当有一个对象要向外界发出信息,有一些对象需要对这个信息进行实时的接收。
使用观察者模式我们可以方便的进行观察者的增添和删除工作而不需要对消息发送方进行任何的改变。
遵循的设计原则
- 面相接口编程
这样我们在写调用的时候就不需要知道具体要调用哪个对象,而是说满足某种条件的对象(即实现了这个接口的对象)来做这件事,相当于将对象重新抽象了一下。这样的好处是当增添新的对象的时候,代码不需要更改。 - 为了交互对象之间的松耦合而努力
意思是让对象之间的相互依赖程度降到最低,也就是在对象内部少进行对于另一个对象的调用如何实现
观察者模式有两类角色:消息发送方subject, 消息接收方observer
这里subject和observer指的不是一个对象而是一类对象,所以我们创建两个接口subject和observer
subject(消息发送方):
我们在subject中添加了register()和remove()方法,方便对observer列表进行管理,同时添加notify()方法对列表中所有的observer进行通知更新操作。
observer(消息接收方):
observer中我们只需要预留update()方法使得subject可以给我们通知。实战演练
|
|
运行结果:
weather:temperature:12.0humidity:24.0pressure:35.0