3.介绍有哪些设计原则,并让比较详细的说了其中开闭原则在项目中的应用?zzzz
单一职责原则:一个类只负责一件事
开闭原则:OC中category,通过runtime 添加交换方法等,都是开闭原则 对修改关闭 对扩展开发
里氏替换原则:父类可以被子类无缝替换 且原有功能不受影响(KVO)
接口隔离原则:使用多个专门的协议 而不是一个庞大臃肿的协议
依赖倒置原则:抽象不依赖于具体实现 具体实现依赖于抽象
迪米特法则:一个对象应当对其他对象尽可能少的了解 高内聚 低耦合
4. iOS SDK 里面有哪些设计模式的实践?zzzz
单例设计模式:在项目中,单例是必不可少的。比如UIApplication、NSUserDefaults就是苹果提供的单例。在项目中经常会将用户数据管理封装成一个单例类,因此用户的信息需要全局使用。
单例确实给我们带来的便利,但是它也会有代价的。单例一旦创建,整个App使用过程都不会释放,这会占用内存,因此不可滥用单例。
KVC/KVO设计模式:有的时候需要监听某个类的属性值的变化而做出相应的改变,这时候会使用KVC/KVO设计模式。在项目中,我需要监听model中的某个属性值的变化,当变化时,需要更新UI显示,这时候使用KVC/KVO设计模式就很方便了。
通知(NSNotification)模式:通知在开发中是必不可少的,对于跨模块的类交互,需要使用通知;对于多对多的关系,使用通知更好实现。
工厂设计模式:在我的项目中使用了大量的工厂设计模式,特别是生成控件的API,都已经封装成一套,全部是扩展的类方法,可简化很多的代码。
类簇:NSNumber;装饰者模式:分类;命令模式:NSInvocation;享元模式:UITableviewCell(UITableview的重用
适配器模式:{
对象适配器:创建一个新类 原类作为对象 在新类中调用原类的方法并增加响应的逻辑代码
类适配器:
}
一个现有类是哟适应变化的问题
责任链:Abstract class ------------> 成员变量 <-------------- Abstract Class
解决一个需求变更的问题
BussinessC -------> BussinessB --------> BussinessA ------->nil
定义:在当前类定义一个和当前类相同的成员变量
应用:UI事件传递机制
桥接:
一个业务解耦的问题
一个列表 需要三个网络数据请求并存 并由后台控制使用哪个网络数据
命令模式:
特点:行为参数化 优势:降低代码重合度
包括命令管理者(单例) 和具体命令实施类
网友评论