在Head First 设计模式一书中提到了面向对象开发的OO原则:
- 封装变化
- 多用组合(has-a),少用继承
- 针对接口编程,不针对实现编程
- 为交互对象之间的松耦合设计而努力
- 依赖倒置原则(Dependency Inversion Principle):要依赖抽象,不要依赖具体类
- 类应该对扩展开放,对修改关闭
1. 封装变化
找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起。
2. 依赖倒置原则
具体是指:不能让高层组件依赖于底层组件。而且,不管高层或底层组件,两者都应该依赖于抽象。
所谓高层组件,是由其他底层组件定义其行为的类。例如:PizzaStore是个高层组件,因为它的行为是由披萨定义的。
依赖倒置原则,究竟倒置在哪里?
在依赖倒置原则中的倒置指的是和一般面向对象设计的思考方式完全相反。看图二,你会注意到底层组件现在竟然依赖高层的抽象(Pizza抽象类)。同样的,高层组件现在也依赖相同的抽象(Pizza抽象类)。看图一所绘制的依赖图是由上而下的,在图二中却倒置了,而且高层与底层模块现在都依赖这个抽象。
下面的指导方针,能帮你避免在面向对象设计中违反依赖倒置原则
- 变量不可以持有具体类的引用。
- 不要让类派生自具体类。
- 不要覆盖基类中已实现的方法。
面向对象(OO)的基础是:
- 抽象
- 封装
- 继承
- 多态
在阅读《Head First 设计模式》这本书时,要时时刻刻思考着:模式如何依赖基础与原则。
设计模式分为三大类:创建型、结构型、行为型