Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 323|回复: 0

[设计模式学习]Template模式简介

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-11-6 00:02:28 | 显示全部楼层 |阅读模式
    Template模式就是在父类中定义一个操作中的骨架算法,而将一些用户自定义的逻辑延迟到子类中,这里以一个示例来说明,假如所有的business方法中都必须要进行用户验证(validateUser)、异常捕获、进行一个业务操作,那么我们就给用户验证、异常捕获封装到父类中,子类中只需要写一些business代码就可以了,父类代码如下:






      
      public
       
      abstract
       
      class
       BusinessTemplate
      ...
      {
        public void execute() throws Exception ...{
             validateUser();
            try ...{
              business();
              doBusiness();
            } catch (Error e) ...{
                 e.printStackTrace();
             }
         }

        void validateUser() ...{
             System.out.println("验证用户...");
         };

        void business()...{
             System.out.println("业务1");
         }

         public abstract void doBusiness();
    }
      
    这里是一个抽象类,有个execute()方法,在这个方法中进行了用户验证、异常捕获和一个业务执行,在这3项任务结束后执行了doBusiness()方法,同时doBusiness()方法又是一个抽象方法,继承该抽象类就要重写这个抽象方法,在这里定义用户自己的业务,写一个子类如下:   


      
      public
       
      class
       Business
      extends
       BusinessTemplate
      ...
      {
    public void doBusiness() ...{
              System.out.println("自定义的业务");
         }
    }
      




    这里继承类就重写了doBusiness方法,这里定义一个用户自己的业务,接着写一个测试类如下:






      
       
       
        package
         spring.chapter4.template;

        public
         
        class
         TestTemplate
        ...
        {
        public static void main(String[] args) throws Exception ...{
             Business business = new Business();
             business.execute();
         }
    }
       
       



    这里的
    Business
    类调用了父类的
    execute
    方法,也就说按
    execute()
    方法的执行顺序来执行,运行结果如下



      
    验证用户
    ...


    业务
    1


    自定义的业务



           这里
    Business
    类是
    BusinessTemplate
    的一个子类,原本也需要写用户验证、异常捕获等业务,而采用了一个父类模板就给所有的业务都省略了,其他任何需要进行用户验证、异常捕获、业务一这些操作的逻辑都只需要继承
    BusinessTemplate
    然后只需要写用户的逻辑代码就可以了,再也不用重复写那些重复的逻辑了,
    Spring
    中正是采用了这样的方法来封装了数据库操作的
    Connection

    Statement
    这些连接、关闭以及异常捕获等。




      
      
       
       

         
       

         
       
      
    复制代码
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 11:01 , Processed in 0.372663 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表