作用:模块化,分层,解耦,降低代码重合度。
设计一个图片缓存框架
image.png
图片通过什么方式进行读写过程?
- 以图片URL的单向Hash值作为Key。
-
流程:
image.png
内存设计上需要考虑哪些问题?
-
存储的Size(设计不同的方式)
10KB以下图片:50个
100KB以下:20个
大于100KB:10个 -
淘汰策略
1.以队列的方式先进先出的方式淘汰。
2.LRU算法,在30分钟是否使用过(提高检查触发频率),每次进行读写,切换前后台触发。。。注意开销。
磁盘设计需要考虑哪些问题?
1.空间大,读取效率低,大小限制(100MB)
2.淘汰策略(某以图片存储时间距今已超过7天)
网络设计
1.请求最大并发量
2.请求超时策略
3.请求的优先级
图片解码在哪个阶段
磁盘读取后或者网络请求返回后。
设计一个时长统计?
记录器:页面样式,瀑布流样式,自定义样式。
记录管理者:记录缓存,磁盘缓存,上传器。
记录数据由于某种原因丢失的方案?
- 定时写磁盘
- 限定内存的缓存条数
延时上传的场景?
- 前后台切换
- 无网到有网
上传时机的把控?
- 立即上传
- 延时上传
- 定时上传
MVVM
客户端整体架构
独立于App通用层(网络,埋点,崩溃)
通用业务层(自定义控件,和业务相关)
中间层(协调,解耦)
业务层
cocoapods组件化管理的架构
image.png
业务之间的解耦通信
- openUrl
- 依赖注入
网友评论