Android 观察者模式

  1.观察者DataWatcher 实现Observer 接口。

   2.被观察者DataChange继承Observable 类。

   3.观察者DataWatcher 向被观察者 DataChange 订阅事件(将观察者DataWatcher添加到被观察者DataChange里面去)。

   4.被观察者DataChange数据有改变,通知观察者DataWathcer相应的数据有改变,请作出相应的操作。

   5.观察者DataWather 向被观察者 DataChange取消订阅事件(将观察者DataWatcher从被观察者DataChange中移除)

 

1.观察者类

public class DataWatcher implements Observer{

    @Override
    public void update(Observable o, Object arg) {
        //观察者接受到被观察者的通知,来更新自己的数据操作。
        Data mData = (Data)arg;
        Log.i("Test", "mData---->>"+mData.getDataChange());
    }
}

 

2.被观察者类

public class DataChange extends Observable {

    private static DataChange instance = null;

    public static DataChange getInstance() {
        if (null == instance) {
            instance = new DataChange();
        }
        return instance;
    }

    public void notifyDataChange(Data data) {
        //被观察者怎么通知观察者数据有改变了呢??这里的两个方法是关键。
        setChanged();
        //通知所有订阅者改变的内容
        notifyObservers(data);
    }
}

3.操作类

//注册观察者
DataChange.getInstance().addObserver(watcher);
//模拟被观察者数据改变,更新数据。
Data mData = new Data();
mData.setDataChange(0);
//更新数据
DataChange.getInstance().notifyDataChange(mData);
@Override
protected void onResume() {
    super.onResume();
    //观察者往被观察者中添加订阅事件。
}

@Override
protected void onPause() {
    super.onPause();
    //观察者从被观察者队列中移除
    DataChange.getInstance().deleteObserver(watcher);
}

注意:注册要在数据改变之前

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值