从页面驱动到System驱动:一次架构重构的思考
概述
随着应用功能日益复杂,早期的“页面驱动”架构(即所有业务逻辑都写在Ability或Page中)逐渐暴露出弊端:代码臃肿、逻辑分散、难以复用和测试。最近,我尝试将核心模块重构为“System驱动”架构,收获颇丰。
描述
什么是System驱动?
它将应用视为一个由“状态”驱动的系统,而非一堆页面的集合。核心思想是:
Store:作为应用的“唯一事实来源”,集中管理所有业务状态。
System:定义业务规则和逻辑,监听Store的状态变化,并决定下一步的行为。
Engine:负责执行具体的业务流程,如网络请求、数据处理等。
UI:纯粹的展示层,只负责渲染Store中的数据和响应用户交互,触发System中的行为。
重构带来的好处:
逻辑集中:所有业务规则都集中在System层,不再散落在各个页面中,易于理解和维护。
状态可预测:状态的变化路径清晰(UI -> System -> Engine -> Store -> UI),便于调试和追踪。
高度复用:业务逻辑与UI解耦,同一套System和Engine可以被不同的UI(如手机、平板)复用。
易于测试:可以对Store、System、Engine进行独立的单元测试,无需启动UI。
重构过程:
识别核心业务状态:将分散在各页面的@State变量提取出来,合并到Store中。
抽离业务逻辑:将页面中的业务处理代码迁移到System层,定义为一个个独立的“行为”。
封装流程:将涉及多步骤的操作(如登录、下单)封装到Engine中。
简化UI:UI层只保留展示和事件绑定代码,通过订阅Store来实现自动更新。
感悟:这次重构让我意识到,当应用复杂度达到一定程度时,架构升级不是“过度设计”,而是“必要投资”。它让代码结构更清晰,也为未来的功能扩展打下了坚实的基础。鸿蒙的Stage模型,似乎也在引导我们走向这种更系统化、状态化的开发范式。
更多推荐

所有评论(0)