模板方法模式在抽象类中定义一个操作的算法的骨架,一些步骤延迟到子类中。
使用场景:
1、多个子类共有方法,且逻辑相同
2、中要的、复杂的方法,可以考虑作为模板方法
抽象类
package com.alphajuns.templateMethod;
public abstract class Template {
public abstract void print();
public void update() {
System.out.println("开始打印");
for (int i = 0; i < 5; i++) {
// 调用打印方法,实际实现位于实现类中
print();
}
}
}
子类
package com.alphajuns.templateMethod;
public class ConcreteTemplate extends Template {
@Override
public void print() {
System.out.println("子类实现方法");
}
}
测试类
package com.alphajuns.templateMethod;
public class Test {
public static void main(String[] args) {
Template template = new ConcreteTemplate();
template.update();
}
}
输出

以上案例,在抽象类的update()方法中调用了抽象方法print(),而print()方法的实现位于子类中,如果存在其它子类,具体实现便为该子类的print()
可参考菜鸟教程的模板方法模式
应用案例