观察者模式类图
Paste_Image.png- 观察者模式也称监听器模式
- 当我们对某一个对象的某一些状态感兴趣时,希望在任何时刻获取其状态的改变
- 比如数据的改变,网络状态的改变,此时,就需要使用观察者模式。
--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
网友评论