观察者模式类图
- 观察者模式也称监听器模式
- 当我们对某一个对象的某一些状态感兴趣时,希望在任何时刻获取其状态的改变
- 比如数据的改变,网络状态的改变,此时,就需要使用观察者模式。
--Observer pattern is one of the behavioral design pattern. Observer design pattern is useful when you are interested in the state of an object and** want to get notified whenever there is any change. **
观察者模式构成要素
- Subject:被观察者,一般来说被观察者自身具有某种属性状态,其状态的改变对我们的应用会有不同业务逻辑上的影响。
- 比如Android中的UI控件:一个Button,一个区内的WiFi连接,容器内的数量变动
Subject contains a list of observers to notify of any change in it’s state, so it should provide methods using which observers can register and unregister themselves. Subject also contain a method to notify all the observers of any change and either it can send the update while notifying the observer or it can provide another method to get the update.
Subject包含了一些观察者(监听者),并提供一些接口供add和removeListener,另外包含一些供客户端使用的方法通知各listener其自身状态发生了改变。
Observer||Listener:用于监听subject的一些状态,比如数据的增加,数据的修改,数据的删除
Observer||Listener一般自定义一个Listener的接口,包含了若干个想监听的方法,在客户端使用匿名内部类的方式add进subject中去。
例子:
subject.class{
private Data mdata;//01
private ArrayList<Listener> mListeners;//02
//observer.interface: //03
private interface Listener{
public void onDataAdded();
public void onDataRemoved();
public void onDataChanged();
....other methods.....
}
//following methods are provided for Observers;//04
public void addListener(Listener l){};
public void removeListener(Listener l){};
public void clearListeners(){};
//following methods are used to notify observers of change of subject dataSteted://05
public void DataAdd();
public void DataChanged();
public void DataRemoved();
}
标注:
--01:表示subject被观察者拥有的数据
--02:表示一个容器用于装载Observer
--03:定义了一个内部接口Observer,包含了若干个对subject的状态的监听
--04:subject提供的一些接口:供客户端添加和移除Observer
--05:供客户端调用当状态发生改变时通知所有的Observer