什么是模板模式
定义一个操作中的算法框架,而将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义该算法的特定步骤。
标准的定义还是稍微有点苦涩难懂的, 大白话就是只要按照我的套路来,你就不会错。
生活中尽是套路
记得高中的时候,数学老师叫我们怎么求解一个数学问题:
第1步:认真审题,找出里面的已知变量和未知变量。
第2步:根据变量之间的关系创建对应的关系表达式。
第3步:通过关系式和常用的定律和公式求解未知变量。
那么这个就是咱们数学老师给咱们的套路,只要按照这个套路来,求解是没有问题的。
看看模板模式的骨架
其中的run()方法,已经在父类里面实现好了,run()方法里面调用的是需要子类进行实现的方法,如上面的doAnything()和doOthering()方法,子类只要按照父类的套路,实现剩下的方法,然后调用父类的run()方法,就ok了。
模板模式的缺点
按照程序的设计习惯,一般父类都是负责抽象,子类才是真正负责实现,但是模板模式,父类里面也是有具体的实现的方法,并且子类的执行结果影响父类的执行结果,在代码阅读上面,可能会有些不适
注意事项
父类中有的具体实现,不需要子类进行重写的话,已经要使用final进行修饰,以此来禁止子类的不规范重写,导致最终的执行结果发生异常。