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

本文通过实例演示了Java中如何使用观察者模式。首先定义了一个被观察者类SimpleObserveable,继承自Observable,用于存储数据并实现数据改变时的通知功能。接着定义了一个观察者类SimpleObserver,实现了Observer接口,并在构造函数中注册到被观察者上。当被观察者的数据发生改变时,会触发观察者的update方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自老罗安卓视频


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以被观察者作为参数,从而可以得到需要处理的被观察者。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值