观察者模式小记

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

### 使用 UniApp 开发小记账本应用程序 #### 项目概述 生活记账小程序通过前端 Vue 和 UniApp 设计开发,后端采用 SpringBoot 提供数据接口支持。主要功能模块包括首页展示、分类记账以及微信登录状态管理[^1]。 #### 创建新项目 首先安装 HBuilderX 或者其他 IDE 工具来创建一个新的 UniApp 项目: ```bash npm install -g @dcloudio/uni-cli uni create myAccountBookProject ``` 进入项目目录并初始化必要的配置文件。 #### 配置 App.vue 生命周期函数 为了更好地控制应用生命周期,在 `App.vue` 中定义如下几个重要钩子函数用于处理不同场景下的逻辑操作: - **onLaunch**: 当整个程序启动时调用此方法, 可以在这里做一些全局性的初始化工作. - **onShow**: 页面每次从前台切到后台再返回前台都会触发这个事件, 合适用来刷新某些实时变化的内容. - **onHide**: 对应于当用户点击 Home 键使 APP 进入后台运行模式时执行的动作. 这些设置有助于提升用户体验流畅度和响应速度[^2]. #### 数据绑定与交互实现 确保所有的业务逻辑都放置在 methods 下面,并且避免 data 属性名称同 method 名冲突以免造成不必要的错误;另外注意检查 HTML 标签内部是否存在重复属性声明尤其是集成第三方 UI 组件库 uView-ui 的时候要格外小心[^3]: ```html <template> <!-- 记录条目输入框 --> </template> <script> export default { name: 'RecordEntry', data() { return { recordType: '', amount: null, date: '' } }, methods:{ addNewRecord(){ // 添加新的财务记录... } } } </script> ``` #### 接口对接与缓存机制 对于前后端分离架构的应用来说,合理的 API 路由规划至关重要。这里推荐使用 RESTful 风格的服务端点配合 axios 发起 HTTP 请求完成增删改查等基本 CRUD 功能。与此同时引入 Redis 做为临时存储介质加速频繁访问的数据读取效率降低 MySQL 查询压力。 #### 微信开放能力接入 如果计划让这款理财工具具备社交分享特性,则需按照官方文档指引注册成为微信公众平台开发者账号获得 appid 权限认证之后才能正常使用诸如支付等功能服务。此外还可以考虑加入直播营销插件吸引更多潜在客户群体关注产品动态[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值