a.面向对象三大特征
- 封装,隐藏内部实现
- 继承,复用现有代码
- 多态,改写对象行为
b.对象是什么
- 从概念层面讲,对象是某种拥有责任的抽象。
- 从规格层面讲,对象是一系列可以被其他对象使用的公共接口。
- 从语言实现层面讲,对象封装了代码和数据。
c.设计原则
- 针对接口编程,而不是针对实现编程
- 优先使用对象组合,而不是类继承
- 封装变化点
- 使用重构得到模式
d.更具体的设计原则
- 单一职责原则(SRP)
一个类应该仅有一个引起它变化的原因。 - 开放封闭原则(OCP)
类模块应该是可扩展的,但是不可以修改。 - Liskov替换原则(LSP)
子类必须能够替换它们的基类。 - 依赖倒置原则(DIP)
高层模块不应该依赖于低模块,二者应该依赖于抽象。
抽象不应该依赖于实现细节,实现细节应该依赖于抽象。 - 接口隔离原则(ISP)
不应该强迫客户程序应该与它们不用的方法。
e.模式分类
从目的来看:
- 创建型(Creational)模式:负责对象的创建。
- 结构型(Structural)模式:处理类与对象间的组合。
- 行为型(Behavioral)模式:类与对象交互中的职责的分配。
从范围来看:
- 类模式处理类与子类的静态关系。
- 对象模式处理对象间的动态关系。
f.书籍推荐
- 《设计模式:可复用面向对象软件的基础》 GoF
- 《面向对象分析与设计》 Grady Booch
- 《敏捷开发:原则、模式与实践》 Robert C. Martin
- 《重构:改善既有代码的设计》 Martin Flower
- 《Refactoring to Patterns》 Joshua Kerievsky