zoukankan      html  css  js  c++  java
  • Java设计模式(16)——行为模式之模板方法模式(Template)

    一、概念

      概念

      

       UML简图

      

       角色

      

       使用场景

      其实我们常用得抽象类就是这个模式得运用,所以基本上属于比较好理解的一种模式。

     二、实践

      根据上述角色,给出相应代码

      抽象模板

    /**
     * 抽象模板
     *
     * @author Administrator
     **/
    public abstract class AbstractTemplate {
        /**
         * 模板方法的声明和实现
         */
        public void templateMethod() {
            // 调用由子类实现的方法
            operation1();
            operation2();
            // 调用已经实现的方法
            operation3();
        }
        public abstract void operation1();
        public abstract void operation2();
        private final void operation3() {
            // 已经实现
        }
    }

      具体模板

    /**
     * 具体模板
     *
     * @author Administrator
     **/
    public class ConcreteTemplate extends AbstractTemplate{
        @Override
        public void operation1() {
            // 基本方法实现
        }
    
        @Override
        public void operation2() {
            // 基本方法实现
        }
    }

       至于使用就很简单了:

     public static void main(String[] args) {
            AbstractTemplate template = new ConcreteTemplate();
            template.templateMethod();
        }

    三、改进与思考

      模板方法的核心就是“好莱坞原则”——子类可以替换掉父类的可变部分,但不能改变顶级逻辑。

      其他注意点

      

      模板方法的理念就是应当尽量减少子类重写父类的基本方法

      命名方面

      钩子方法应当以do开头,这在web里面的httpServlet里可以具体看到!

      关于重构

      大方法应当打散,改为模板方法进行调用。如果有局部变量的声明,可以通过一个专用的取值方法进行处理。

      重构的一个方向便是尽量将行为往高端移动,而状态往子类走,尽量将状态的声明延迟到子类,这样就可以实现行为和状态的分离。如果上层抽象类中确实需要用到状态,则使用相应的取值方法(get()).

  • 相关阅读:
    Kali 2020.3安装docker和vulhub
    Web渗透——身份管理测试
    Web渗透——配置管理测试
    网站信息收集
    linux修改MAC的方法
    '文件上传总结'
    美杜莎和九头蛇的对比
    渗透测试常见开放端口及利用
    Google hacking 语法
    web渗透测试基本步骤
  • 原文地址:https://www.cnblogs.com/jiangbei/p/7760538.html
Copyright © 2011-2022 走看看