小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
通过问题看本质!!!
设计原则
在进行软件系统设计时所要遵循的一些经验准则,应用该准则的目的通常是为了避免某些经常出现的设计缺陷。
我们都知道面向对象的三大特性:封装、继承、多态。
在开发过程中,对接口编程而不是对实现编程,优先使用对象组合而不是使用继承。
设计类方法,无非就是顺序、判断、循环这几大类。
其实我们在有意或者无意之中都会用到设计原则。
单一职责
一个类只负责一件事情。
UIView :负责事件传递和事件响应
CALayer:负责动画和UI的展示
开闭原则
对修改关闭、对扩展开发。比如属性是readOnly,对外提供扩展的方法。 (扩展新类,而不是修改旧类)
接口隔离原则
一个类对另外一个类对依赖应该建立在最小的接口上,设计接口的时候要精简单一。
使用多个专门的协议,而不是一个庞大臃肿的协议。
比如UITableView的代理方法。
里氏替换原则
父类可以被子类无缝替换、原有的功能不受影响。
比如我们经常用到的KVO。
(不要破坏继承体系,继承父类而不是去改变父类)
迪米特法则
一个类对自己依赖的类尽可能少的了解。高内聚、低耦合。
(只与你的朋友交谈、不和陌生人交谈。无需直接交互的2个类,使用中间着)
依赖倒置原则(面向接口编程)
抽象不应该依赖具体的实现,而具体的实现可以依赖抽象。
上层模块不应该依赖底层模块,他们都应该依赖于抽象。
比如对AFNetwoking框架再封装一层接口。 (对接口编程而不是对实现编程)
合成复用原则
优先组合、其次继承。