一、单一原则
每个功能模块仅仅完成单一职责。一个类不能太“累”,不能承担过多的任务。一个类的职责过多,会产生耦合,并且被服用的可能性会变小。
二、开闭原则
一个软件实体应当对扩展开放,对修改关闭。即软件实体应尽量在不修改原有代码的情况下进行扩展。
三、里式转换原则
所有引用基类(父类)的地方必须能透明地使用其子类的对象。即使用父类的地方,可以替换为它的子类,因为子类包含了父类所有的成员变量和方法。
四、依赖倒置原则
抽象不应该依赖于细节,细节应当依赖于抽象。换言之,要针对接口编程,而不是针对实现编程。在我们编程的时候,尽量面向接口、抽象类编程。将逻辑和实现分开,有利于理解整个系统,也提高了系统的可扩展性。
在大多数情况下,开闭原则、里式转换原则、依赖倒置原则会同时出现。开闭原则是目标,里式转换原则是基础,依赖倒置原则是手段,它们相辅相成,相互补充,目标一致,只是分析问题时的角度不同。
五、接口隔离原则
每个接口都承担一个相对独立的功能,和单一原则类似。不能太大,太大会产生耦合,使用不便,也不会太小,接口太小会造成接口泛滥,难以维护。
六、合成复用原则
能用组合的情况尽量用组合,而不能继承,只有在组合不能很好解决问题时才用组合。