模板方法模式

模板方法定义了算法的步骤,并允许子类为一个或多个步骤提供实现;

模板方法模式:
在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类实现,模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤;

钩子方法
如下代码,钩子,可以让子类实现模板算法中的可选部分,或者在钩子对子类的实现不重要的时候,子类可对钩子置之不理。

Android Activity 的生命周期方法,就是 模板方法模式的体现,很多方法,是钩子方法;

示例代码如下:

public abstract class AbsTemplete {
    
   // 算法的步骤,为避免子类修改,申明成 final 类型
    protected final void prepareRecipe() {
        primitiveOperation1();
        primitiveOperation2();
                if(customerInput()) {
                       hook();
                }
        concreteOperation();
    }

       protected boolean hook() {
           return true;
       }

    protected abstract void primitiveOperation1();
        // 供子类实现
    protected abstract void primitiveOperation2();

        // 默认实现
    public void concreteOperation() {
        System.out.println("concreteOperation ");
    }

        // 钩子方法
        void hook() {
        }
}

Arrays.sort() 就是一个模板方法模式的体现,只不过他没有使用到继承;有点类似策略模式,但不是策略模式,策略模式通过组合提供了一整套算法,而模板并不是;

你可能感兴趣的:(模板方法模式)