必须做作业三:XXX项目中观察者模式解析
定义:
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们能够自动更新自己 。主要分为四部分:1.抽象主题角色 2.抽象观察者角色 3.具体主题角色 4.具体观察者角色
第一、观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
第二、被观察者会向所有的登记过的观察者发出通知,方便更改更新。
应用:
观察者模式在简单天气显示的应用
原理:
两个公告牌
CurrentConditionsDisplay
和ForecastDisplay
实现了Observer
和DisplayElement
接口,在他们的构造方法中会调用WeatherData
的registerObserver
方法将自己注册成观察者,这样被观察者WeatherData
就会持有观察者的应用,并将它们保存到一个集合中。当被观察者WeatherData状态发送变化时就会遍历这个集合,循环调用观察者
公告牌更新数据的方法。后面如果我们需要增加或者删除公告牌就只需要新增或者删除实现了
Observer和
DisplayElement`接口的公告牌就好了。好处:
观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体观察者列表,每一个具体观察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。
实验链接:
https://github.com/BaronZ88/DesignPatterns/tree/master/src/com/baron/patterns/observer/observer