模板方法模式:定义一个操作中的算法的框架,而将详细的步骤延迟到子类中。模板方法使得子类可以不改变算法的结构下重新定义算法的步骤。
模板方法模式 Template Pattern
一个算法可以明确分割为几个关键步骤,这几个步骤的顺序是固定的,但是每个步骤的实现会随环境的改变而变化,对于这类问题常用模板方法来解决。
类图结构
结构解析
AbstractClass
抽象类,定义一套算法框架templateMethod
。ConcreteClass
实现类,实现抽象方法,在同一个算法框架下,体现每个实现类的差异性。
示例
1 | // 1. AbstractClass |
总结
模板方法模式是把不变行为搬移到父类,去除子类的重复代码,帮助子类摆脱重复不变行为的纠缠。常见使用场景:
- 子类有共有方法,并且逻辑基本相同
- 用于代码重构,将公共方法抽取到父类中
在 Android
中,Activity/Fragmengt
等的生命周期是标准的模板方法,以及 AsyncTask
的执行步骤 onPreExecute --> doInBackgroud --> onPostExecute
等这些都是模板方法的体现。
参考文档
- 大话设计模式
Android
源码设计模式解析与实战