urlname
type
Post
password
SyncToConfluence
category
业务技能
date
Jul 9, 2025
slug
b2b22205-9fef-4e5b-833e-6e28313ce035
icon
Button
catalog
summary
tags
代码重构
Architecture
cover
Status
BusyTime
Status 1
status
Published

良好架构设计的必要性

💡
As Android apps grow in size, it's important to define an architecture that allows the app to scale, increases the app's robustness, and makes the app easier to test.
  • 良好的架构有助于应用扩展、提升鲁棒性并简化测试

架构设计的核心原则

  • 关注点分离(Separation of Concerns)
  • 数据驱动(Drive UI from Data Models)
  • 单一数据源(Single Source of Truth, SSOT)
  • 单向数据流(Unidirectional Data Flow, UDF)

关注点分离

  • 避免将所有代码都写在Activity或Fragment中。
  • UI相关的类应仅包含处理UI交互的逻辑,保持精简。
  • 业务逻辑应该在业务层做处理,各自关心所在层的内容。

数据驱动

  • UI应由数据驱动,最好是持久化数据。
  • 数据模型独立于UI元素和应用组件生命周期。
  • 持久化模型能确保在OS终止应用时数据不丢失,并在网络不稳定或无网络时应用仍能工作。
  • 基于数据模型构建架构能提升应用的可测试性和鲁棒性。

单一数据源

  • 每个新的数据类型都应指定一个SSOT。
  • SSOT是该数据的所有者,只有它能修改数据,并通过不可变类型暴露数据,通过函数/事件供其他类型调用修改。
  • 优点:集中化数据变更、保护数据、追踪变更、更容易发现bug。
  • 在离线优先应用中,数据库通常是应用数据的SSOT

单向数据流

  • 每个应用至少应包含两个层:UI层(显示应用数据)和数据层(包含业务逻辑并暴露应用数据)。
  • 可以增加一个可选的领域层来简化和重用UI和数据层之间的交互。
  • 现代应用架构鼓励采用响应式和分层架构、在所有层中使用UDF、UI层使用状态持有者管理UI复杂度、使用协程和Flow以及依赖注入最佳实践。
notion image
notion image

资料

 
Android应用架构之UI层EasiNote重构之UI模块
Loading...