一、单一职责原则
- 定义:一个对象应该只包含单一的职责,并且该职责被完整的封装在一个类中。
- 说明:一个类或模块,所承担的职责越多它被复用的可能性就越小,耦合性就越大,当其中一个职责变化的时候可能会影响其他职责的运作。
二、开闭原则
- 定义:软件实体应该对扩展开放,对修改关闭。
- 说明:通俗的说就是软件实体应该尽量在不修改源代码的情况下进行扩展。
三、里氏代换原则
- 定义:所有引用到基类的地方必须能透明的使用其子类的对象
- 说明:在使用基类对象的地方都可以使用子类对象,因此在程序中尽量使用使用基类类型来定义,而在运行时再确定其子类类型,用子类对象来替换父类对象。
四、依赖倒转原则
- 定义:高层模块不应该依赖低层模块,他们都应该依赖抽象。抽象不应该依赖于细节,细节应该依赖于抽象
- 说明:依赖倒转原则要求针对接口编程,不要针对实现编程。使用接口或抽象类进行变量类型声明,参数类型声明、方法返回类型声明,以及数据类型的转换等,而不要用具体类来做这些事情。
五、接口隔离原则
- 定义:客户端不应该依赖那些它不需要的接口。
- 说明:当我们的接口太大的时候,需要将它分割成一些更小的细节接口,每一个接口应该承担一种相对独立的角色,不干不相关的事,该干的事都要干,也就是前面单一职责原则。
六、合成复用原则
- 定义:优先使用对象组合,而不是通过继承来达到复用的目的。
- 说明:在一个新的对象里通过关联关系(包括组合,聚合)来使用一些已有的对象,使之成为新对象的一部分,新对象通过委派调用已有对象的方法达到复用功能的目的。尽量使用关联关系,少用继承,降低耦合度
七、迪米特法则
- 定义:每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。
- 说明:一个软件实体应当尽可能少的与其他实体发生相互作用,这样当某个模块需要或者类发生修改的时候会尽量少的影响其他模块,扩展会相对容易。