父类定义运行的顺序流程
public abstract class TemplatePattern { //模板方法 public final void templateMethod(){ method1(); method2(); method3(); } private void method1(){ System.out.println("父类实现业务逻辑"); } public void method2(){ System.out.println("父类默认实现,子类可覆盖"); } protected abstract void method3();//子类负责实现业务逻辑 }
子类实现,可变的方法
public class TemplatePatternImpl extends TemplatePattern { @Override protected void method3() { System.out.println("method3()在子类TemplatePatternImpl中实现了!!"); } }
便可实现流程不变,方法内容可有子类实现变化
TemplatePattern t1 = new TemplatePatternImpl(); t1.templateMethod();
参考 https://my.oschina.net/solarxie/blog/510815