RxJava 中Observer接口和Observable类的使用

Java.util工具包中提供了观察者和被观察者的两个对象

下面是一个例子

public class SimpleObserver implements Observer  {

public SimpleObserver(SimpleObservable observable){

observable.addObserver(this);

}

@Override

public void update(Observable arg0, Object arg1) {

// TODO Auto-generated method stub

System.out.println("data is changed :" + ((SimpleObservable)arg0).getData());

}

}

Observer对象提供了update方法,

参数一:该观察者观察的对象,

参数二:Observable中的notifyObservers(Object data)方法提供的传值,使观察者可以知道被观察者的数据的改变

调用时机:被观察者数据的setter方法中

public class SimpleObservable extends Observable{

private int data=0;

public int getData() {

return data;

}

public void setData(int data) {

if(data!=this.data){

this.data = data;

setChanged();//设置发生改变

notifyObservers();//通知观察者,状态发生了改变

}}}

被观察者对象在setter函数中调用setchanged和notifyObservers()对象来进行通知观察者

测试主函数:

public class TestMain {

public static void main(String[] args) {

// TODO Auto-generated method stub

SimpleObservable observable =new SimpleObservable();

SimpleObserver observer1=new SimpleObserver(observable);

observable.setData(1);

observable.setData(2);

observable.setData(2);

observable.setData(3);

}

}

输出结果:

data is changed :1

data is changed :2

data is changed :3












最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 版权声明:本文为小斑马伟原创文章,转载请注明出处! 上篇简单的阐述了响应式编程的基本理论。这篇主要对响应编程进行详...
    ZebraWei阅读 2,585评论 0 2
  • [java优先队列PriorityQueue的使用] PriorityQueue弹出优先级最高的元素,优先级的比较...
    codercjg阅读 399评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 前言RxJava和Retrofit也火了一段时间了,不过最近一直在学习ReactNative和Node相关的姿势,...
    AFinalStone阅读 562评论 0 0
  • 我从去年开始使用 RxJava ,到现在一年多了。今年加入了 Flipboard 后,看到 Flipboard 的...
    Jason_andy阅读 5,617评论 7 62