抽时间学习了Arthur讲师的模板模式的课程,课程虽然很短,但老师讲得非常清楚,当然这个模板模式看起来也比较简单。为了记的牢固,正好写个手记记录一下。

  模板模式及基于JAVA中的继承技术来实现的。父类定义了一个整体的业务流程,父类实现了这些流程的调用顺序的方法,这个方法不可被重写的,方法定义前要加final。同时业务逻辑中通用的部分,在父类实现,个性化的实现交给子类。

  如果不知道什么情况下要使用模板方法,就先梳理自己要实现的业务逻辑。比如在实际运维过程中,现在有个自动化运维任务,就是一键重启weblogic。我们维护了100多套中间件,启动的流程相同,但是有weblogic、was、tomcat等不同,同时启动也分两个场景,一个是计划重启,一个是故障下重启,他们的启动方法不同。我们可以将一键重启的逻辑总结如下:

  可以看出,一键启动,故障下的启动,多出一个信息收集,这个在实际的生产环境中,主要指的是线程信息的收集,方便对故障进行分析。其他流程都相同,信息采集正好可以使用钩子来实现。

  其他子类如tomcat一样。模式说到底还是一个方法论。业务理清楚了,也许我们不知道模板模式,也能写出这样的模式。