Files
real-e-party-iOS/gift_system_architecture.md
edwinQQQ a35a711be6 chore: Initial clean commit
- Removed YuMi/Library/ (138 MB, not tracked)
- Removed YuMi/Resources/ (23 MB, not tracked)
- Removed old version assets (566 files, not tracked)
- Excluded Pods/, xcuserdata/ and other build artifacts
- Clean repository optimized for company server deployment
2025-10-09 16:19:14 +08:00

237 lines
15 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 礼物系统架构图
## 系统整体架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 礼物系统架构 │
├─────────────────────────────────────────────────────────────────┤
│ UI层 (Presentation Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPSendGiftView │ │RoomAnimationView│ │GiftComboFlagView│ │
│ │ (发送界面) │ │ (动画容器) │ │ (连击标识) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Business Logic Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │XPGiftPresenter │ │GiftComboManager │ │GiftAnimationMgr │ │
│ │ (发送逻辑) │ │ (连击管理) │ │ (动画管理) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 数据层 (Data Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPGiftStorage │ │ Api+Gift │ │ GiftInfoModel │ │
│ │ (数据缓存) │ │ (网络请求) │ │ (数据模型) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 礼物发送流程
```
用户操作
┌─────────────────┐
│ XPSendGiftView │ ← UI层用户选择礼物、数量、接收者
└─────────────────┘
┌─────────────────┐
│XPGiftPresenter │ ← 业务层:验证参数、处理业务逻辑
└─────────────────┘
┌─────────────────┐
│ Api+Gift │ ← 数据层:发送网络请求
└─────────────────┘
┌─────────────────┐
│ 服务器响应 │ ← 外部:处理礼物发送
└─────────────────┘
┌─────────────────┐
│ 成功回调处理 │ ← 业务层:更新状态、触发动画
└─────────────────┘
```
## 礼物接收流程
```
网络消息
┌─────────────────┐
│RoomAnimationView│ ← UI层接收消息、分发处理
└─────────────────┘
┌─────────────────┐
│GiftAnimationMgr │ ← 业务层:管理动画队列、控制播放
└─────────────────┘
┌─────────────────┐
│GiftComboManager │ ← 业务层:处理连击逻辑、状态管理
└─────────────────┘
┌─────────────────┐
│ 动画播放 │ ← UI层SVGA/MP4/PAG动画渲染
└─────────────────┘
```
## 数据存储架构
```
┌─────────────────┐
│ XPGiftStorage │ ← 单例缓存管理器
└─────────────────┘
┌─────────────────┐
│ roomGiftCache │ ← 房间礼物缓存 (NSCache)
└─────────────────┘
┌─────────────────┐
│roomGiftPanelTags│ ← 礼物面板缓存 (NSCache)
└─────────────────┘
┌─────────────────┐
│ GiftInfoModel │ ← 礼物数据模型
└─────────────────┘
```
## 礼物类型处理架构
```
礼物类型枚举
┌─────────────────┐
│ GiftType │ ← 21种不同礼物类型
└─────────────────┘
┌─────────────────┐
│ 类型分发处理 │ ← 根据类型选择不同处理逻辑
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ 普通礼物 │ │ 福袋礼物 │ │ VIP礼物 │
│ (标准流程) │ │ (特殊逻辑) │ │ (特权处理) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
```
## 动画播放架构
```
动画请求
┌─────────────────┐
│GiftAnimationMgr │ ← 动画管理器:队列管理、状态控制
└─────────────────┘
┌─────────────────┐
│ 动画类型判断 │ ← 根据礼物类型选择动画方式
└─────────────────┘
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ SVGA动画 │ │ MP4动画 │ │ PAG动画 │
│ (vggUrl) │ │ (viewUrl) │ │ (viewUrl) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
┌─────────────────┐
│ 动画渲染 │ ← UI层实际动画播放
└─────────────────┘
```
## 连击管理架构
```
连击触发
┌─────────────────┐
│GiftComboManager │ ← 连击管理器:状态跟踪、队列管理
└─────────────────┘
┌─────────────────┐
│ 网络请求队列 │ ← 管理发送请求的队列
└─────────────────┘
┌─────────────────┐
│ UI动画队列 │ ← 管理UI更新的队列
└─────────────────┘
┌─────────────────┐
│GiftComboFlagView│ ← UI层连击标识显示
└─────────────────┘
```
## 可分离性分析图
```
┌─────────────────────────────────────────────────────────────────┐
│ 可分离性分析 │
├─────────────────────────────────────────────────────────────────┤
│ 高可分离性 (可脱离UI使用) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPGiftStorage │ │ Api+Gift │ │ GiftInfoModel │ │
│ │ (数据缓存) │ │ (网络请求) │ │ (数据模型) │ │
│ │ 可分离度: 90% │ │ 可分离度: 95% │ │ 可分离度: 100% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 中等可分离性 (需要重构) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │XPGiftPresenter │ │GiftAnimationMgr │ │ 业务逻辑验证 │ │
│ │ (发送逻辑) │ │ (动画管理) │ │ (数据处理) │ │
│ │ 可分离度: 60% │ │ 可分离度: 40% │ │ 可分离度: 70% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 低可分离性 (UI强依赖) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ XPSendGiftView │ │RoomAnimationView│ │GiftComboManager │ │
│ │ (发送界面) │ │ (动画容器) │ │ (连击管理) │ │
│ │ 可分离度: 20% │ │ 可分离度: 10% │ │ 可分离度: 30% │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 重构建议架构
```
┌─────────────────────────────────────────────────────────────────┐
│ 重构后架构 │
├─────────────────────────────────────────────────────────────────┤
│ UI层 (Presentation Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftUIViewController│ │AnimationContainer│ │ComboUIView │ │
│ │ (纯UI展示) │ │ (动画容器) │ │ (连击UI) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 业务逻辑层 (Business Logic Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftBusinessService│ │AnimationService │ │ComboService │ │
│ │ (业务逻辑) │ │ (动画逻辑) │ │ (连击逻辑) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
├─────────────────────────────────────────────────────────────────┤
│ 数据层 (Data Layer) │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │GiftDataService │ │NetworkService │ │CacheService │ │
│ │ (数据服务) │ │ (网络服务) │ │ (缓存服务) │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
```
## 总结
### 当前架构特点
1. **三层架构**: UI层、业务层、数据层基本分离
2. **职责混合**: 部分类承担了过多职责
3. **耦合度高**: UI与业务逻辑深度耦合
4. **扩展性差**: 新增功能需要修改多处代码
### 重构目标
1. **清晰分层**: 每层职责明确,依赖关系清晰
2. **低耦合**: 通过协议和依赖注入降低耦合
3. **高内聚**: 每个类只负责一个核心功能
4. **易测试**: 业务逻辑可独立测试
5. **易扩展**: 新增功能只需修改对应层
### 脱离UI使用可行性
- **完全可分离**: 数据层 (100%)
- **部分可分离**: 业务层 (60-70%)
- **难以分离**: UI层 (10-30%)
通过重构可以将约70%的功能脱离UI使用为未来的功能扩展和测试提供更好的基础。