美文网首页
模板方法模式

模板方法模式

作者: zhaoyubetter | 来源:发表于2016-11-08 22:02 被阅读13次

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

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

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

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

    相关文章

      网友评论

          本文标题:模板方法模式

          本文链接:https://www.haomeiwen.com/subject/cmhzuttx.html