面向对象核心原则:抵御变化
面向对象设计的原则
依赖倒置原则(DIP)
- 高层(稳定)不应该依赖于低层(变化),两者均应该依赖于抽象
- 抽象(稳定)不应该依赖与细节(变化)
开发封闭原则(OCP)
- 对扩展开发,对更改封闭
- 类模块应该是可扩展的,但是不可修改的
单一职责原则(SRP)
- 一个类应该仅有一个引起他变化的原因(类具有极强的独立性)
- 变化的方向隐含着类的责任
Liskov替换原则(LSP)
- 子类必须能够替换它们的基类(IS-A),避免乱继承,导致代码结构换了
- 继承表达类型抽象
接口隔离原则(ISP)
- 接口应该小而完备.
- 不然调用者会产生迷茫,甚至调用类内部接口,导致类不利于调整,因为调用关系,类接口调整,将导致调用者也随之调整
优先使用对象组合,而不是类继承
- 组合比继承更解耦
封装变化点
- 一侧变化一侧稳定
针对接口编程
- 不将变量类型声明为某个特定类型的具体类
- 可以减小各部分的依赖