鸿蒙应用开发UI基础第二十四节,如何选择开源工具存储用户首选项数据?
摘要:【学习目标】 明确PreferencesUtil单利模式的局限,掌握「多实例池」的设计思路与实现逻辑; 完成 Preferences 工具类从「单文件单例」到「多文件实例池」的核心升级; 掌握鸿蒙静态库(HAR)的创建、配置、导出、打包全流
【学习目标】
明确PreferencesUtil单利模式的局限,掌握「多实例池」的设计思路与实现逻辑;
完成 Preferences 工具类从「单文件单例」到「多文件实例池」的核心升级;
掌握鸿蒙静态库(HAR)的创建、配置、导出、打包全流程;
将升级后的「多实例池工具类」解耦封装为独立 HAR 库,实现跨项目复用;
掌握库工程规范、版本管理、接口设计、测试验证的企业级实践。
一、核心背景:上一节单例模式的局限
上一节 PreferencesUtil 是单例模式,仅能操作一个固定的 Preferences 文件,在复杂业务场景下存在明显局限:
局限点
具体问题
单文件存储
所有业务配置(用户信息/应用配置/缓存数据)挤在一个文件,易出现键名冲突
无法隔离业务数据
不同模块/业务的配置无法隔离,删除/修改数据时易误操作其他业务的配置
复用性差
工具类与业务工程耦合,无法直接迁移到其他项目
扩展能力弱
新增存储文件需修改工具类源码,不符合「开闭原则」
本节核心解决思路:
升级架构:从「单例」升级为「多实例池」,每个存储文件对应一个独立实例;
解耦封装:剥离业务依赖,封装为独立 HAR 库;
简化使用:保留「静态快捷方法+实例方法」双调用模式,兼顾便捷性与灵活性。
二、工程结构(API18+ 核心目录)
PreferenceLibDemo/ # 工程根目录
├── AppScope/ # 应用全局配置目录
├── entry/ # 主应用模块(用于验证HAR库功能)
├── preferences/ # HAR库模块(核心封装模块)
│ ├── src/
│ │ ├── main/
│ │ │ ├── ets/
│ │ │ │ ├── components/ # HAR库组件目录(本节暂未使用)
│ │ │ │ ├── utils/ # 工具类核心目录
│ │ │ │ │ ├── PreferencesConfig.ets # 类型/枚举/接口/常量定义
│ │ │ │ │ └── PreferencesUtil.ets # 多实例池核心工具类
│ │ │ │ ├── resources/ # HAR库资源目录
│ │ │ │ └── module.json5 # 模块基础配置
│ │ ├── ohosTest/ # 鸿蒙测试目录
│ │ └── test/ # 单元测试目录
│ ├── build-profile.json5 # HAR库构建版本配置
│ ├── consumer-rules.txt # 编译依赖该模块的应用时生效 作用于依赖方的混淆流程
│ ├── hvigorfile.ts # HAR库构建脚本
│ ├── Index.ets # HAR库对外统一导出入口
│ ├── obfuscation-rules.txt # 编译当前模块时生效 | 仅作用于自身代码
│ └── oh-package.json5 # 重要内容:HAR库核心配置(元信息/依赖/兼容版本)
├── build-profile.json5 # 工程级构建配置
├── hvigorfile.ts # 工程级构建脚本
├── oh-package.json5 # 工程根级依赖配置
└── oh-package-lock.json5 # 工程依赖版本锁定文件
2.1 静态库创建
在 DevEco Studio 中创建 HAR 库模块步骤:
右键工程根目录 → New → Module;
选择 Static Library(静态库)→ 填写模块名称 preferences 完成创建;
手动在 preferences/src/main/ets/ 下创建 utils 目录,用于存放核心工具类。
