“开-闭”原则(OCP):一个软件实体应当对扩展开放,对修改关闭。换言之,应当可以在不必修改代码的情况下改变这个模块的行为。
用面向对象的语言来讲,不允许更改的是系统的抽象层,而允许扩展的是系统的实现层。
抽象类:仅提供一个类型的部分实现。抽象类可以有实例变量,以及一个或多个构造子。抽象类可以同时有抽象方法和具体方法。
“里氏代换”原则(LSP): 一个软件实体如果使用的是一个基类的话,那么一定适用于其子类。讲的是:基类和子类的关系。
“依赖倒转”原则(DIP):要依赖于抽象,不要依赖于具体。 要针对接口编程,不要针对实现编程。
“接口隔离”原则(ISP):使用多个专门的接口比使用单一的总接口要好。 换句话说:一个类对另一个类的依赖性应当是建立在最小的接口上的。
“合成、聚合复用”原则(CARP):要尽量使用合成/聚合,尽量不要使用继承。
“迪米特”法则(LOD):一个对象应当对其他对象有尽可能少的了解。