woieha320r的博客

模版方法

用于规定方法调用顺序,但自己不负责实现方法,适用于规定几乎永远不变的流程

· Java里抽象类就是这个作用,规定方法的调用顺序,具体实现由子类实现

abstract class Template {

    abstract protected void doA();

    abstract protected boolean needDoC();

    abstract protected void doC();

    public final void doing() {
        doA();
        //钩子,是否需要调用由子类自己实现
        if (needDoC()) {
            doC();
        }
    }
}

public class TemplateImpl extends Template {

    @Override
    protected void doA() {
        System.out.println("A");
    }

    @Override
    protected boolean needDoC() {
        return true;
    }

    @Override
    protected void doC() {
        System.out.println("C");
    }

    public static void main(String[] args) {
        new TemplateImpl().doing();
    }
}