iOS 设计模式
一、编程中的六大设计原则
-
1、单一职责原则:一个类只负责做一件事
比如:CALayer:动画和视图的展示;UIView:事件传递和视图响应 -
2、开闭原则:对修改关闭,对扩展开放;考虑扩展性,不在原来的基础上来回修改
-
3、接口隔离原则:使用多个协议,而不是一个庞大臃肿的协议(eg:UITableViewDataSource、UITableViewDelegate)
-
4、依赖倒置原则:抽象不依赖于具体实现、具体实现可依赖于抽象;调用接口感觉不到内部实现
-
5、里氏替换原则:父类可以被子类无缝替换,且功能不受任何影响
-
6、迪米特法则:一个对象对其他对象尽可能少的了解,实现高聚合、低耦合
二、图片缓存框架的设计
-
manager
-
内存缓存
a、内存的空间有限,针对不同尺寸的图片,给出不同的方案(10k以下50个;100kb以下20个;100kb以上10个)
b、内存淘汰策略,使用LRU(最近最少使用算法)
c、淘汰策略触发时机设计(定期检查:不建议,比较耗性能;提高检查频率,但是注意开销:1、前后台切换2、每次读写的时候) -
磁盘缓存
a、存储方式
b、大小限制
c、移除时间:7天或者15天 -
网络下载
a、请求最大并发量
b、请求超时策略
c、请求优先级 -
code manager(图片解码、图片解压缩),以图片单向hash为key存储
a、图片解码:针对jpg、png、gif等不同格式使用不同的方式解码
b、图片解码时机:在子线程刚下载完时;在子线程刚从磁盘读取完时
c、注意避免在主线程解压缩、解码图片
三、时长统计框架的设计
-
记录器
a、页面式记录器
b、流式记录器
c、自定义式 -
记录管理者
a、内存记录缓存
b、磁盘缓存
c、上传器 -
如何降低数据的丢失率
a、定期写入磁盘
b、达到某个值时写入磁盘 -
记录上传的时机
a、从前台切换到后台
b、从无网络到有网络 -
上传时机的选择
a、立即上传
b、定时上传
c、延迟上传 -
转载请标明出处
-
如有错误理解,还请各路大神批评指出