模板方法模式
1、定义
定义一个操作中算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重新定义该算法的特定步骤。
2、使用场景
在面向对象的开发过程中,通常会遇到这样一个问题,知道一个算法说需要的关键步骤,并确定了这些步骤的执行顺序,但是某些步骤的具体实现是未知的。
1)、多个子类有公有的方法,并且逻辑基本相同时
2)、重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能这由各个子类去实现
3)、重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过子函数约束其行为
3、UML类图
角色介绍:
AbsTemplate:抽象类,定义了一套算法框架
ConcreteImplA:具体实现类A
ConcreteImplB:具体实现类B
4、代码示例
AsynTask、Activity的生命周期、Fragment的生命周期
BaseActivity,BaseFragment
5、总结
模板方法总结成四个字就是:流程封装
优点:
1)、封装不变部分。扩展可变部分
2)、提取公共部分代码,便于维护
缺点:
模板方法会带来阅读代码的难度,会让用户觉得难以理解