观察者模式小记

在 Android 开发中,观察者模式是一种非常常见的设计模式,它用于实现对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并被自动更新。以下是观察者模式在 Android 中的实现和应用。

观察者模式的基本组成

观察者模式主要由以下两部分组成:

  1. Subject(目标):维护一组观察者,提供用于添加和删除观察者的方法,以及通知观察者的方法。
  2. Observer(观察者):定义一个更新接口,以便在目标状态发生变化时收到通知。

Android 中的观察者模式实现

在 Android 中,观察者模式有多种实现方式,以下是一些常见的实现:

1. java.util.Observablejava.util.Observer

Java 本身提供了一个简单的观察者模式实现:

  • Observable 类是一个可观察对象,它内部维护了一个观察者列表,并提供了添加、删除观察者和通知观察者的方法。
  • Observer 接口定义了一个 update 方法,当 Observable 对象的状态改变时,会调用这个方法。
public class MyObservable extends Observable {
    private int value;
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
        setChanged(); // 标记状态已改变
        notifyObservers(); // 通知所有观察者
    }
}
public class MyObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        if (o instanceof MyObservable) {
            MyObservable myObservable = (MyObservable) o;
            // 更新操作
        }
    }
}
2. LiveData

在 Android Architecture Components 中,LiveData 是一个可观察的数据持有类,它可以感知生命周期,并只在组件处于活跃状态时通知观察者。

LiveData<Integer> liveData = new MutableLiveData<>();
liveData.observe(this, value -> {
    // 更新 UI
});

liveData 的值发生变化时,所有注册的观察者都会收到通知。

3. EventBus

EventBus 是一个事件总线库,它简化了组件间的通信,允许你在不同的组件之间发布和订阅事件。

// 发布事件
EventBus.getDefault().post(new SomeEvent());
// 订阅事件
@Subscribe(threadMode = ThreadMode.MAIN)
public void onSomeEvent(SomeEvent event) {
    // 处理事件
}
4. 自定义观察者模式

在某些情况下,你可能需要根据具体需求自定义观察者模式。

public interface CustomObserver<T> {
    void onChanged(T t);
}
public class CustomObservable<T> {
    private final List<CustomObserver<T>> observers = new ArrayList<>();
    public void addObserver(CustomObserver<T> observer) {
        observers.add(observer);
    }
    public void removeObserver(CustomObserver<T> observer) {
        observers.remove(observer);
    }
    protected void notifyObservers(T data) {
        for (CustomObserver<T> observer : observers) {
            observer.onChanged(data);
        }
    }
}

总结

观察者模式在 Android 开发中广泛应用于各种场景,如事件通知、数据绑定、状态管理等。通过使用观察者模式,可以有效地解耦组件,提高代码的可维护性和灵活性。上述几种实现方式都有其适用场景,开发者可以根据具体需求选择合适的实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值