设计模式

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事件传递机制

桥接:

一个业务解耦的问题

一个列表 需要三个网络数据请求并存 并由后台控制使用哪个网络数据

命令模式:

特点:行为参数化 优势:降低代码重合度

包括命令管理者(单例) 和具体命令实施类 

你可能感兴趣的:(设计模式)