Ref:
https://javadoop.com/post/design-pattern#toc_21
模板方法模式
在含有继承结构的代码中,模板方法模式是非常常用的。
通常会有一个抽象类:
public abstract class AbstractTemplate {// 这就是模板方法public void templateMethod() {init();apply(); // 这个是重点end(); // 可以作为钩子方法}protected void init() {System.out.println("init 抽象层已经实现,子类也可以选择覆写");}// 留给子类实现protected abstract void apply();protected void end() {}}
模板方法中调用了 3 个方法,其中 apply () 是抽象方法,子类必须实现它,其实模板方法中有几个抽象方法完全是自由的,我们也可以将三个方法都设置为抽象方法,让子类来实现。也就是说,模板方法只负责定义第一步应该要做什么,第二步应该做什么,第三步应该做什么,至于怎么做,由子类来实现。
实现类:
public class ConcreteTemplate extends AbstractTemplate {public void apply() {System.out.println("子类实现抽象方法 apply");}public void end() {System.out.println("我们可以把 method3 当做钩子方法来使用,需要的时候覆写就可以了");}}
客户端调用演示:
public static void main(String[] args) {AbstractTemplate t = new ConcreteTemplate();// 调用模板方法t.templateMethod();}
代码其实很简单,基本上看到就懂了,关键是要学会用到自己的代码中。
