观察者设计模式(Observable类Observer接口)的实现demo
2015-03-12 17:55
661 查看
今天学习BaseAdapter源码的时候发现其持有数据观察对象,点到底层发现原来观察者模式是java.util包中已经提供了的。
其中,DataSetObservable,Observable,DataSetObserver.
BaseAdapter持有DataSetObservable对象,DataSetObservable继承Observable。
public abstract class BaseAdapter implements ListAdapter,SpinnerAdapter{private final DataSetObservable mDataSetObservable = new DataObservable();
}
public class DataSetObservable extends Observable<DataSetObserver>{
}
Observable里面有注册观察者解注册观察者方法,DataSetObserver抽象类里面有onChanged()和onInvalidated()两个方法。
DataSetObserver介绍 文章地址:http://www.cnblogs.com/jimwind/archive/2013/01/24/2875072.html
下面是观察者模式的一个demo:importjava.util.* ; classHouse extendsObservable{ // 表示房子可以被观察 privatefloat price ;// 价钱 publicHouse(floatprice){ this.price = price ; } publicfloat getPrice(){ returnthis.price ; } publicvoid setPrice(floatprice){ // 每一次修改的时候都应该引起观察者的注意 super.setChanged() ; // 设置变化点 super.notifyObservers(price) ;// 价格被改变 this.price = price ; } publicString toString(){ return"房子价格为:" + this.price ; } }; classHousePriceObserver implementsObserver{ privateString name ; publicHousePriceObserver(String name){ // 设置每一个购房者的名字 this.name = name ; } publicvoid update(Observable o,Object arg){ if(arginstanceofFloat){ System.out.print(this.name + "观察到价格更改为:") ; System.out.println(((Float)arg).floatValue()) ; } } }; publicclass ObserDemo01{ publicstatic void main(String args[]){ House h = newHouse(1000000) ; HousePriceObserver hpo1 = newHousePriceObserver("购房者A") ; HousePriceObserver hpo2 = newHousePriceObserver("购房者B") ; HousePriceObserver hpo3 = newHousePriceObserver("购房者C") ; h.addObserver(hpo1) ; h.addObserver(hpo2) ; h.addObserver(hpo3) ; System.out.println(h) ; // 输出房子价格 h.setPrice(666666) ; // 修改房子价格 System.out.println(h) ; // 输出房子价格 } };
运行结果:
房子价格为:1000000.0
购房者C观察到价格更改为:666666.0
购房者B观察到价格更改为:666666.0
购房者A观察到价格更改为:666666.0
房子价格为:666666.0
相关文章推荐
- 通过Observable类和Observer接口实现观察者设计模式
- 利用Java提供的Observer接口和Observable类实现观察者模式
- 观察者设计模式( Observable类Observer接口)
- Java常用类库--观察者设计模式( Observable类Observer接口)
- 观察者设计模式-Observable类和Observer接口
- Java常用类库——观察者设计模式(Observer接口、Observable类)
- Java常用类库--观察者设计模式( Observable类Observer接口)
- 使用java类库中的Observable类和Observer接口实现观察者模式(精简版)
- Java常用类库--观察者设计模式( Observable类Observer接口)
- 观察者设计模式( Observable类Observer接口)
- 深入JDK源码之Observer接口和Observable类实现观察者模式
- 设计模式之观察者(Observer)模式与其C++通用实现(中)
- 【设计模式】观察者模式(observer)c#/python实现
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern) (转)
- 【设计模式】设计模式C++编程实现之观察者模式(ObserverPattern)
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- Head First 设计模式——观察者模式(Observer Pattern)——Python实现(1)
- 设计模式:观察者模式(observer) java实现及原理
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)
- 我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)