Skip to content

重构架构:分离 UI 与业务逻辑,抽离相机模块 #1

@linxi515

Description

@linxi515

计划将整个 app 架构重构为更低耦合的多模块结构,实现 UI 与业务逻辑彻底分离,并将 Camera 相关代码迁移至独立库(camera-lib)。

重构目标

  • 明确划分 app(UI层)、camera-api(接口)、camera-impl(实现)、common-utils(工具)等模块。
  • UI 层仅负责界面与状态展示,所有业务逻辑通过接口与独立服务通讯。
  • Camera 相关代码(如 Preview、CameraController、ImageSaver、HDRProcessor、PanoramaProcessor 等)全部迁移至 camera-impl。
  • 设计 CameraModuleApi 接口,约定预览、拍照、录像、保存等核心功能。
  • 通过 DI 或 Service Locator 注入 camera 模块,UI 仅通过接口调用,不直接依赖实现。
  • 保证迁移过程中行为兼容,分阶段替换调用点,每步通过单元/集成测试验证。

步骤计划

  1. 新建 camera-api 模块,定义 CameraModuleApi 接口(详见建议)。
  2. 在 app 内实现 CameraAdapterImpl,短期桥接旧代码,逐步替换为接口调用。
  3. 修改 MyApplicationInterface、MainActivity、MainUI 等,所有相机相关操作均改为调用 CameraModuleApi。
  4. 创建 camera-impl 模块,移动 Preview/CameraController 等实现,并改造成对接口的实现。
  5. 清理 app 内部旧实现,优化接口与依赖关系,保证模块边界清晰。
  6. 引入 MVVM 架构,ViewModel 负责业务状态,UI 只处理界面。
  7. 增加测试覆盖率,确保迁移后各项功能(拍照、录像、保存、后处理)正常。

备注

  • 迁移建议参考上方技术方案。
  • 优先保证 CameraModuleApi 契约稳定。
  • 可先完成接口与适配器,逐步迁移实现与 UI。

如需补充 camera-api 接口草案或适配器样例,请在 issue 下方留言。

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions