1.封装、继承、多态
- 封装,隐藏内部实现
- 继承,复用现有代码
- 多态,改写对象行为
继承是以封装为基础的,多态是以继承为基础的。
封装,侧重于对象的描述。
继承和多态,侧重于对象之间的关系描述。
2.从编程语言直观了解面向对象
通过面向对象编程语言(OOPL)认识到的面向对象,并不是面向对象的全部。OOPL的三大机制“封装、继承、多态”可以表达面向对象的所有概念,但是这三大机制没有刻画出面向对象的核心精神。
3.面向对象的根本性问题
- 我们为什么要使用面向对象?
- 我们应该怎样使用三大机制来实现好的面向对象?
- 我们应该遵循什么样的面向对象原则?
4.重新认识面向对象
- 隔离变化
宏观层面能将变化所带来的的影响减为最小 - 各司其职
微观层面面向对象的方式更强调各个类的“责任”,新增员工类型不会影响原来员工类型的实现代码
耦合关系直接决定着软件面对变化时的行为
模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。
模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。
5.怎样使用三大机制来实现“好的面向对象”
- 针对接口编程,而不是针对实现编程
- 优先使用对象组合,而不是类继承
类继承在某种程度上破坏了封装性,子类父类耦合度高;对象组合只要求被组合的对象具有良好定义的接口,耦合度低; - 封装变化
设计模式是“封装变化”方法的最佳阐释,封装变化,最重要的一点就是发现变化,或者说是寻找变化。