二、 抽象类延伸出的模板设计模式

时间:2023-02-17 14:01:29

具体可参考:https://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html

模板设计模式的关键:子类可以置换掉父类的可变部分,但是子类却不可以改变模板方法所代表的*逻辑

示例:

public abstract class AbstractTemplate {
    
    /**
     * 模板方法
     */
    public void templateMethod() {
        // 调用基本方法
        abstractMethod();
        hookMethod();
        concreteMethod();
    }

    /**
     * 抽象方法(由子类实现)
     */
    protected abstract void abstractMethod();

    /**
     * 基本方法(由子类重写)
     */
    protected void hookMethod() {
        
    }

    /**
     * 具体方法(抽象类实现)
     */
    private final void concreteMethod() {
        // 业务相关的代码
    }
    
}