- 依赖倒置原则:高层次的代码(稳定)不应该依赖低层次的代码(变化)、抽象的代码不应该依赖具体的代码。
- 开放封闭原则:类模块应该开放扩展的,而其原先的代码尽量封闭不可改变。
- 单一职责原则:一个类应该仅有一个变化的原因,该变化隐含了它的职责,职责太多时会导致扩展时对代码东拉西扯,造成混乱。
- 替换原则:子类必须能够替换它的基类(IS-A),继承可以表达类型抽象。
- 接口隔离原则:接口应该小而完备,不该强迫用户使用多余的方法。
- 优先使用组合而不是继承:继承通常会让子类和父类的耦合度增加、组合的方式只要求组件具备良好定义的接口。
- 封装变化点:
- 针对接口编程,而不是针对实现编程。