应用设计模式的目的:
- 在变化和稳定之间寻找隔离点,分离稳定和变化并来管理变化
- 应对变化,提高复用
什么时候使用设计模式:
- 寻找变化点,在变化点使用设计模式,理解什么时候什么地点使用设计模式
- 没有一步到位的设计模式,随着代码的开发带来的变化一般要经过几次重构
重构的关键技法:
- 静态 ->动态
- 早绑定 ->晚绑定
- 继承 ->组合
- 编译时依赖 ->运行时依赖
- 紧耦合 ->松耦合
组件协作模式
- Template Method
- Strategy
- Observer/Event
Template Method
具有稳定的整体操作结构,但是子步骤却有改变的需求。
定义:定义一个操作的骨架,而将一些步骤延迟(就是指的晚绑定,一般用虚函数来实现)到子类中,使得子类可以不改变(重用)一个算法的结构即可重新定义一些步骤。
Strategy
在软件构建的过程中,某些对象使用的算法可能多种多样,如果将这些算法都编码到对象中,将会使对象变的异常复杂。而且不使用的算法也可能会变为一个性能负担。
如果代码中存在大量的条件判断,考虑选用Strategy模式,用来消除条件判断语句,进行解耦合。
定义:定义一系列算法,把他们封装起来,并使得他们可以相互替换(变化)运行在程序中。
Observer
在软件构建过程中,我们需要为某些对象建立一种通知依赖关系,就是目标对象状态发生改变时所依赖的对象(观察者)需要得到通知。
定义:定义对象间一对多的一种依赖关系,以便一个对象发生改变时所依赖的对象都会得到通知。