iOS面试之架构模块

2019-12-16  本文已影响0人  木子心语

架构

架构内容如下:

架构.png

1.架构设计的目的

2.图片缓存

- 图片缓存框架,需要一个管理者
- 需要一个内存管理模块
- 需要对图片磁盘上的处理
- 本地没有图片,可以通过网络下载图片
- 如果图片如果压缩或者是解码,需要解码的管理者
- 需要负责图片解码,图片压缩/解压缩
- 以图片URL的单向Hash值作为Key

图片缓存.png
- 图片缓存,先到内存中进行查找,如果找到,结束查找
- 如果缓存中,没有找到,我们可以通过磁盘查找,如果磁盘查找找到,结束查找
- 如果没有找到,通过网络下载,图片缓存结束
- 存储的大小
- 淘汰策略
- 存储方式
- 大小限制
- 淘汰策略 ,某一图片存储时间距今已超过7天
- 应用策略模式对不同图片格式进行解码
- 磁盘读取后:从磁盘读取未解码,放在内存中解码完成,系统显示图片之
前,会在主线程进行图片解码操作,从磁盘读取后进行解码,放在内存中

- 网络请求返回后:通过对图片解码,回传给内存模块,通过管理者在内存模块中进行缓存

2.阅读时长统计

- 分为2块:记录器,记录管理者
- 记录器:负责对每一条时长统计的数据进行记录
- 记录管理者:记录器时长数据交给记录管理者进行统计

- 记录器
- 页面式,比如视频,阅读时长同push开始,到pop结束为结点
- 流式,比如新闻的阅读时长记录
- 自定义记录器

- 记录管理者
- 记录缓存(通过内存记录,如果出现,应用退出及手机停电的问题,怎么处理?)数据会丢失
- 通过磁盘存储,记录时长统计数据
- 需要一个上传器记录时长统计记录交给服务器端,保证记录时长的正确性
- 不同分类场景提供的关于记录的封装,适配
- 定时写磁盘
- 限定内存缓存条数,超过某条,就写磁盘
- 前后台切换
- 从无网到有网的变化
- 立刻上传
- 延时上传
- 定时上传

3.复杂页面架构

MVVM.png
- Model :数据层
- View :包含ViewController, ViewController对ViewModel强引用,作为
ViewController的成员变量,viewModel通过block的方式,回传结果给使用方
- ViewModel 业务逻辑层, ViewModel对model强引用,model通过block或者代理模式回传给业务层

4.客户端整体架构

客户端整体架构.png
- 通用层,时长统计框架,崩溃统计,网络第三方库
- 放到任何App,都可以起到支撑的作用
- 公司通用的基础组件
协调与解耦的作用

问题:业务层之间如何解耦?

- OpenURL
- 依赖注入的方式

QQ交流群: 796142709

上一篇下一篇

猜你喜欢

热点阅读