RxJAVA使用util包的类实现简易观察者与被观察者通信

来源:互联网 发布:python gui自动化 编辑:程序博客网 时间:2024/05/16 15:03

转载自老罗安卓视频


API为我们提供了一个观察者接口Observer和一个被观察者类Observable,

1.定义一个被观察者类:

public class SimpleObserveable extends Observable {    private int data = 0;    public int getData() {        return data;    }    public int setData(int i){        if (i!=data){            //被观察者数据改变            data = i;            //设置改变            setChanged();            //通知观察者状态改变            notifyObservers();        }        return data;    }}


2.定义观察者类:

public class SimpleObserver implements Observer {    //重写构造器,绑定被观察者    public SimpleObserver(SimpleObserveable observeable){        observeable.addObserver(this);    }    //重写update,在被观察者状态改变时会调用这个方法    @Override    public void update(Observable observable, Object o) {        //将参数中被观察者强转成我们自定义的被观察者,获得他的数据并输出        System.out.println(((SimpleObserveable)observable).getData());    }}
3.进行测试:

public class MyTest {    public static void main(String[] args){        SimpleObserveable observeable = new SimpleObserveable();        SimpleObserver observer = new SimpleObserver(observeable);        observeable.setData(1);        observeable.setData(1);        observeable.setData(12);        observeable.setData(133);        //结果显示为        // 1        // 12        // 133    }}
右键运行这个main方法。
逻辑也是比较清晰的,在观察者的构造方法中传入被观察者并让被观察者订阅观察者,当被观察者数据改变时自身调用setChanged和notify方法(两个都要调用)通知观察者,触发观察者的update.。这个update以被观察者作为参数,从而可以得到需要处理的被观察者。

0 0
原创粉丝点击