iOS 设计模式

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、延迟上传

  • 转载请标明出处

  • 如有错误理解,还请各路大神批评指出

1、 IOS设计模式的六大设计原则之单一职责原则(SRP,Single Responsibility Principle) 定义   就一个类而言,应该仅有一个引起它变化的原因。 定义解读   这是六大原则中最简单的一种,通俗点说,就是不存在多个原因使得一个类发生变化,也就是一个类只负责一种职责的工作。 优点 类的复杂度降低,一个类只负责一个功能,其逻辑要比负责多项功能简单的多; 类的可读性增强,阅读起来轻松; 可维护性强,一个易读、简单的类自然也容易维护; 变更引起的风险降低,变更是必然的,如果单一职责原则遵守的好,当修改一个功能时,可以显著降低对其他功能的影响。 问题提出   假设有一个类C,它负责两个不同的职责:职责P1和P2。当职责P1需求发生改变而需要修改类C时,有可能会导致原本运行正常的职责P2功能发生故障。 解决方案   遵循单一职责原则。分别建立两个类C1、C2,使C1完成职责P1,C2完成职责P2。这样,当修改类C1时,不会使职责P2发生故障风险;同理,当修改C2时,也不会使职责P1发生故障风险。   说到这里,大家会觉得这个原则太简单了。稍有经验的程序员,即使没有听说过单一职责原则,在设计软件时也会自觉的遵守这一重要原则。在实际的项目开发中,谁也不希望因为修改了一个功能导致其他的功能发生故障。而避免出现这一问题的方法便是遵循单一职责原则。虽然单一职责原则如此简单,并且被认为是常识,即便是经验丰富的程序员写出的程序,也会有违背这一原则的代码存在。为什么会出现这种现象呢?因为有职责扩散。实际项目中,因为某种原因,职责P被分化为粒度更细的职责P1和P2。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值