观察者模式在简单天气显示的应用
原理:
两个公告牌
CurrentConditionsDisplay
和ForecastDisplay
实现了Observer
和DisplayElement
接口,在他们的构造方法中会调用WeatherData
的registerObserver
方法将自己注册成观察者,这样被观察者WeatherData
就会持有观察者的应用,并将它们保存到一个集合中。当被观察者WeatherData状态发送变化时就会遍历这个集合,循环调用观察者
公告牌更新数据的方法。后面如果我们需要增加或者删除公告牌就只需要新增或者删除实现了
Observer和
DisplayElement`接口的公告牌就好了。
好处:
观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
实验链接:
https://github.com/BaronZ88/DesignPatterns/tree/master/src/com/baron/patterns/observer/observer