video-flow-b/app/service/uml/DDDLayer.md
2025-08-19 00:29:48 +08:00

4.6 KiB
Raw Blame History

🎯 各层职责与内容

1. Component (UI层)

职责:纯展示逻辑,用户交互处理 内容

  • React组件Modal、Form、Button等
  • 样式和布局逻辑
  • 用户交互事件绑定
  • 通过props接收数据和回调函数

设计原则

  • 不包含业务逻辑
  • 不直接操作状态
  • 通过回调函数与上层通信
  • 可复用和可测试

2. Hook (状态管理层)

职责:状态管理、副作用处理、业务逻辑组合 内容

  • 状态管理HookuseState、useReducer等
  • 副作用处理useEffect、useCallback等
  • 业务逻辑组合调用多个UseCase
  • 提供统一的数据接口给组件

设计原则

  • 协调全局状态和本地状态
  • 处理异步操作和副作用
  • 组合多个UseCase的调用
  • 提供响应式的数据接口

3. UseCase (业务逻辑层)

职责:核心业务规则、业务流程编排、领域逻辑验证 内容

  • 业务用例类ImageStoryUseCase、ScriptGenerationUseCase等
  • 完整的业务流程方法
  • 业务规则验证逻辑
  • 业务实体构建和管理

设计原则

  • 包含完整的业务流程
  • 执行业务规则验证
  • 协调多个Service的调用
  • 返回领域实体,而不是原始数据
  • 无状态,方法调用间不依赖实例状态

4. Service (外部服务层)

职责:外部服务集成、技术实现细节、基础设施 内容

  • 外部API调用服务ImageProcessingService、AIAnalysisService等
  • 技术实现细节(图片处理、网络请求等)
  • 错误处理和重试逻辑
  • 可以被多个UseCase复用的服务

设计原则

  • 专注于技术实现细节
  • 处理外部API调用
  • 提供统一的错误处理
  • 实现接口隔离原则

5. Repository (数据访问层)

职责:数据持久化、数据查询、数据转换 内容

  • 数据访问类ImageStoryRepository、CharacterRepository等
  • 数据持久化逻辑
  • 数据查询和过滤
  • 数据转换Entity ↔ Data

设计原则

  • 封装数据访问细节
  • 提供统一的CRUD接口
  • 处理数据转换
  • 实现数据访问的抽象

📊 状态管理策略

状态分类与存储位置

  • 业务核心状态 → Zustand StorecurrentStory、storyList等
  • UI交互状态 → 组件useStateisModalOpen、localInput等
  • 业务流程状态 → UseCase私有状态analysisProgress等
  • 用户偏好状态 → Zustand StoreselectedCategory、theme等
  • 临时计算状态 → useMemo/useCallbackfilteredStories等

数据流向

状态流转过程 用户操作 → 组件本地状态 → Hook协调 → UseCase业务逻辑 → 全局状态更新 → 组件重新渲染 具体流程

  1. 用户在组件中触发操作
  2. 组件更新本地状态
  3. Hook协调多个UseCase调用
  4. UseCase执行业务逻辑和规则验证
  5. 更新全局状态
  6. 组件重新渲染显示结果

设计模式应用

核心模式

  1. 依赖注入UseCase通过构造函数注入Service依赖
  2. 工厂模式创建UseCase实例管理依赖关系
  3. 策略模式可插拔的业务策略如不同的AI分析策略
  4. 观察者模式:状态变化通知,组件响应式更新

🧪 测试策略

分层测试

  • Component层:组件渲染和交互测试
  • Hook层:状态管理和副作用测试
  • UseCase层:业务逻辑和规则验证测试
  • Service层:外部服务集成测试
  • Repository层:数据访问逻辑测试

错误处理机制

错误分类

  • 领域错误业务规则验证失败StoryValidationError
  • 基础设施错误外部服务调用失败ImageUploadError
  • 应用错误应用逻辑错误UseCaseError

错误处理流程

  1. Service层捕获原始错误并转换为应用错误
  2. UseCase层抛出领域错误
  3. Hook层统一捕获和处理错误
  4. 组件层显示错误信息

性能优化策略

状态优化

  • 使用useMemo优化计算属性
  • 使用useCallback优化函数引用
  • 合理使用React.memo包装组件

业务逻辑优化

  • UseCase方法设计为无状态避免实例状态维护
  • Service层实现缓存和重试机制
  • Repository层实现数据分页和懒加载

📋 开发检查清单

新增功能时

  • 是否在正确的层次添加代码?
  • 是否遵循单一职责原则?
  • 是否定义了清晰的接口?
  • 是否处理了错误情况?
  • 是否添加了相应的测试?

重构代码时

  • 是否保持了接口的向后兼容?
  • 是否更新了相关的测试?
  • 是否验证了功能完整性?