面向对象设计原则
重新认识面向对象
- 理解隔离变化:面向对象更能适应变化, 将变化带来的影响减为最小
- 各司其职: 面向对象的方式更强调各个类的职责, 例如上节的demo, 各个图形的绘制由各个图形自己绘制, 而不是由画布来绘制
- 什么是对象?
- 从语言层面:对象封装了代码和数据
- 从规格层面: 对象是一系列可被使用的公开接口
- 从概念层面: 对象是某种拥有责任的抽象
依赖倒置原则(DIP)
- 高层模块(稳定)不应该依赖于底层模块(变化), 二者都应该依赖于抽象(稳定)
- 抽象(稳定)不应该依赖于细节(变化), 细节应该依赖于抽象(稳定)
上节的例子中:分解思想的demo里
MainForm依赖于Line和Rect
MainForm属于高层, 是稳定的
Line和Rect属于底层, 是变化的, 而此时MainForm依赖了低层, 违反了DIP原则
而采用另一个思想以后
MainForm依赖于Shape
而Line和Rect此时都依赖着Shape
Shape是抽象, 是稳定的, 而Line和Rect是细节, 是变化的, 符合DIP原则
至于抽象不应该依赖于实现细节, 这是什么意思呢?
Shape的抽象,