1.模板方法模式介绍
模板方法模式是十一大行为型模式之一。
执行流程是固定的,有固定的执行顺序。
2.模板方法模式的定义
定义一个可以操作中的算法的框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的接口即可重定义该算法的某些特定步骤。
3.模板方法模式的使用场景
1.多个子类有公有的方法,并且逻辑基本相同时。
2.重要复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则有各个子类实现。
3.重构时,模板方法模式是一个经常使用的模式,把相同的代码抽取到父类中,然后通过钩子函数约束其行为。
4.UML类图
UML类图5.角色介绍
1.AbsTemplate:抽象类,定义了一套算法框架。
2.ConcreteImplA:具体实现类A。
3.ConcreteImplB:具体实现类B。
6.例子
抽象类 老板,具体实现类(上图) 员工,具体实现类(上图) 客户端调用(上图)例子分析
通过上面例子可看到,在startUp方法中有一些固定的步骤,这几个步骤不会变,但步骤的实现可能各不相同,子类需要覆写相应的方法来进行自定义处理,这里startUp为final方法,以保证逻辑流程不能被子类修改,子类只能修改某一步骤中的具体实现,这样就保证了逻辑流程的稳定性。startUp方法中的几个算法步骤我们可以称为是一个套路,也称为模板方法。
7.Android源码中的模板方法模式
Activity的生命周期函数,例如,Activity从启动到显示窗口会经历如下过程:onCreate,onStart,onResume,这就是一个典型的Activity启动流程,也是一个模板方法模式的应用。
8.总结
模板方法模式用4个字概括就是:流程封装。也就是把某个固定的流程封装到一个final函数中,并且让子类能够定制这个流程中的某些或者所有步骤,这就要求父类提取共用的代码,提升代码的复用率,同时也带来了更好的可扩展性。
优点:封装不变部分,扩展可变部分。提取公共部分代码,便于维护。
缺点:模板方法会带来代码阅读的难度,会让用户觉得难以理解。
网友评论