01观察者模式

观察者模式类图

01观察者模式_第1张图片
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 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

你可能感兴趣的:(01观察者模式)