模板方法模式在抽象类中定义一个操作的算法的骨架,一些步骤延迟到子类中。
使用场景:
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()
可参考菜鸟教程的模板方法模式
应用案例