单一职责原则
就一个类而言,应该仅有一个引起它变化的原因,一个类应该是一组相关性很高的函数、数据的封装
开闭原则
软件中的对象(类、模块、函数等)应该对于扩展是开放的,但是对于修改是封闭的。当应用有新的改变时,首先要考虑对其进行扩展,而不是在原代码上修改。
里氏替换原则
所有引用基类的地方必须能透明的使用其子类的对象,也即只要父类能出现的地方子类就可以出现,而且替换为子类也不会产生任何错误或异常,使用者可能根本就不需要知道是父类还是子类。
依赖倒置原则
模块间的依赖通过抽象发生,实现类之间不发生直接的依赖关系,其依赖关系是通过接口或抽象类产生的。(面向接口编程)
接口隔离原则
客户端不应该依赖他不需要的接口,让客户端依赖的接口尽可能的小。
迪米特原则
(最少知识原则)一个类应该对自己需要耦合或调用的类知道的最少,类的内部如何实现,如何复杂都与调用者或依赖者没有关系,调用者或者依赖者只需要知道他需要的方法即可,其他的不关心。