开闭原则

一个软件实体如类,模块和函数应该对扩展开放对修改关闭。

合成/聚合复用原则

新对象的某些功能在已创建好的对象里已实现,那么尽量用已有对象提供的功能,使之成为新对象的一部分,而不要再重新创建

依赖倒置原则

高层模块不应该依赖底层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象

接口隔离原则

客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。

迪米特法则

一个对象应该对其他对象保持最少的了解

里氏替换原则

所有引用基类的地方必须能透明的使用其子类的对象

单一职责原则

不要存再多于一个导致类变更的原因,即一个类只负责一项职责