框架架构
框架架构主要是为了以下几点:
1 模块化
2 分层
3 解耦
4 降低代码重合度
客户端整体架构
1 独立于App的通用层 (时长,崩溃,网络第三方库)
2 通用业务层(通用基础组件,特殊UIImageView封装)
3 中间层(用于解耦)
4 业务A、业务B、业务C
意义:单独拿出一个业务,都可以形成一个App
业务之间解耦的通信方式?
1 openUrl
2 依赖注入(通过遵循协议)
复杂页面架构
View: 控件初始化,设置数据,交互事件代理
ViewController: 视图创建组合、协调逻辑、事件回调处理
ViewModel:业务逻辑层、数据增删改查封装者、线程安全处理
Engine : 增删改查、网络请求、数据解析、本地处理逻辑
图片缓存
图片缓存框架设计
图片读写流程
内存设计问题
1存储size :10kb以下50张,100kb以下20张,100kb以上10张
2 淘汰策略 :队列先进先出方式淘汰。LRU算法-最近最久未使用算法(如30分钟之内是否使用过)。1定时检查 2 每次进行读写、前后台切换。(注意开销2优先 )
磁盘设计问题
1 存储方式
2 大小限制(100M)
3 淘汰策略(超过7天)
网络设计需要考虑问题?
1 图片最大并发量
2 请求超时策略
3 请求优先级
图片解码?
对不同格式的图片,解码采用什么方式来做?
应用策略模式对不同图片进行解码
在哪个阶段进行图片解码?
磁盘读取之后, 网络请求返回后。