单一职责原则
一个类只负责一件事情。
比如UIView 和 CALayer 的关系,UIView 负责响应用户交互。CALayer 负责视图显示。
接口隔离原则
协议负责的功能分离,避免臃肿协议
胖接口中的方法分组,然后用多个接口替代它,每个接口服务于一个子模块。简单地说,就是使用多个专门的接口比使用单个接口要好很多。
比如tableView 的 dlelegate 和 dataSource ,前者负责事件的回调,后者负责数据的传送。
里氏替换原则
子类可以完全的替换掉父类,并且功能不受影响。
比如KVO的实现原理中,当 object 对象的 addObserver····方法被调用时,系统就会对 object 创建子类 NSKVONotifying_object , ISA指针指向子类。此时子类继承了完整了父类功能。
开闭原则
对修改关闭,对扩展开放
依赖倒置原则
抽象不依赖于具体实现,具体实现可以依赖于抽象。
比如一个人员信息进行获取展示的功能,对“人”这个类通过属性定义组合进行抽象,但是属性信息的来源是来自文件,或是来自数据库,或是来自两者的组合,并不需要在业务层面进行暴露。所以抽象不依赖具体实现,但是不管实现层面是什么渠道或者方案,“人”这个抽象的类必须要完整的属性定义才能在业务层使用。实现层面的数据来源和方案都是要服务于抽象的。
迪米特法则
又叫做最少知道原则,一个类要尽量减少对其他类的了解,尽量减少依赖
高内聚,低耦合