模板方法模式介绍
在面向对象开发过程中,通常会遇到这样的一个问题,我们知道一个算法所需的关键步骤,并确定了这些步骤的执行顺序,但是,某些步骤的具体实现还是未知的,或者说某些步骤的实现是会随着环境的变化而改变的。这个时候就需要用到模板方法模式。
模板方法实际上是封装了一个固定的流程,就像是一套执行模板一样,第一步该做什么,第二步该做什么都已经在抽象类中定义好。而子类可以有不同的算法实现,在框架不被修改的情况下实现某些步骤的替换。
模板方法的定义
定义一个操作中算法的框架,而将一些步骤放到子类中实现,使子类可以不改变一个算法的结构即可重新定义该算法的特定步骤。
模板方法的使用场景
- 多个子类有公有的方法,并且逻辑基本相同时。
- 重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类来实现。
- 重构时,模板方法是一个经常使用的模式,把相同的代码抽取到父类中。
应用实例
Android中的AsyncTask和Activity生命周期就是模板方法模式。