一句话概括

XXX 本质上就是一个 YYY,它通过 ZZZ 机制实现了…… 如果只记住一句,就这句。

它是干什么的?

用一句话说清楚这个技术/工具解决什么问题。

源码走读

入口

1
2
3
4
5
6
7
// 关键入口方法
public func load() {
// 1. 检查缓存
// 2. 发起请求
// 3. 解析数据
// 4. 回调通知
}

核心流程

1
2
3
request → 拦截器链 → 缓存检查 → 网络请求 → 解析器 → 回调

命中缓存→ 直接返回

设计亮点

💡 源码里最精彩的设计:

1
2
3
4
5
// 用协议 + 泛型实现了类型安全的回调
protocol Handler<T> {
associatedtype T
func handle(_ data: T)
}

对比其他方案

  • 旧方案:XX 方式,问题是……
  • 新方案:YY 方式,优势在……
  • 本质区别:从 A 模式变成了 B 模式

最佳实践

1
2
3
4
5
// 推荐的用法
let config = Config {
$0.timeout = 10
$0.retryCount = 3
}

常见误区

误区:XX 可以解决所有问题
事实:它只适合 YY 场景,ZZ 场景应该用别的