zoukankan      html  css  js  c++  java
  • java使用之模板模式,提高效率

    生活中我们会遇到各种各样的模板,从我们测试人员角度去看,想测试计划,测试方案包括测试用例基本都是使用一定的模板,我们只需要对模板做填充,即可完成工作,省去了每次都需要全量编辑的麻烦。。。

    其实在java中也应该有这样的模板,使用起来就方便多了,

    于是就有了模板模式这种编写方法:

      概述:某些事情的步骤是固定的,有些是不固定的,那么我们可以为该类事情提供一个模板出来,conger提高效率

      那么怎么做呢?基本上可以总结为三个步骤:

        1、先写出这件事情的一种解决方案,然后我们进行改造。

        2、分析代码,将不断变化的代码独立出来,单独写一个方法,注意抽象话,由程序的调用者去实现这个方法,这样相当于让用户去编辑这么个操作;

        3、将这个模板方法使用final修饰,保证这个模板不会被人修改

    下面就可以用一个简单的例子一步步看下怎么变化的:

      我们就计算下一个简单程序的执行时间吧!

      这块用到了java中System类中的currentTimeMillis()方法,用来统计当前时间戳的

      第一步:写出统计时间的一种解决方法:

    public class MyRuntime{
    	
    	public final void getTime(){
    		long startTime = System.currentTimeMillis();	//记录开始的时间
              //下面的while循环就是用户的实际代码,我随便写的 while(i<1000){ System.out.println("执行次数"+i); i++; } long endTime = System.currentTimeMillis(); //记录结束的时间. System.out.println("运行时间 :"+ (endTime-startTime)); } }

      第二步:独立出变化的代码,并定义成一个抽象类的方法

    public class MyRuntime{
    	
    	public  void getTime(){
    		long startTime = System.currentTimeMillis();	//记录开始的时间
    		Code();                                                       //调用变化的代码
    		long endTime = System.currentTimeMillis();  //记录结束的时间.
    		System.out.println("运行时间 :"+ (endTime-startTime));
    	}
    	
    	public abstract void code();                                  //定义一个抽象方法,待用户去重写
    }
    
    //该类继承模板类并对用户代码进行重写,这样,用户就只需要编写这部分代码去调用模板方法了
    public class Demo11 extends MyRuntime                   
    {	
    	//code是对模板类中Code方法的重写,调用者自己编辑
    	public  void code(){
    		int i = 0;
    		while(i<100){
    			System.out.println("i="+i);
    			i++;
    		}
    	}
    }       
    

      第三步:使用final修饰模板方法,防止被修改

    public class MyRuntime{
    	
    	public final void getTime(){        //使用final修饰
    		long startTime = System.currentTimeMillis();	//记录开始的时间
    		Code();
    		long endTime = System.currentTimeMillis();  //记录结束的时间.
    		System.out.println("运行时间 :"+ (endTime-startTime));
    	}
    	
    	public abstract void code();
    }
    
    public class Demo11 extends MyRuntime
    {	
    	//code方法内部就写要计算运行时间 的代码;
    	public  void code(){
    		int i = 0;
    		while(i<100){
    			System.out.println("i="+i);
    			i++;
    		}
    	}
    }
    
    public class Run{
      public static void main(String[] args) 
    	{
            Demo11 d = new Demo11();
           d.getTime();
    	}
    }
    

      至此,这个完整的模板就完成并调用了一次了,以后就可以使用该方法去简化代码了。。。。

      

    —————————————————————————————————————————————————————————————————————————————————————————————————————————————— 保持学习的劲头
  • 相关阅读:
    多层缓存、要素缓存
    ASP.NET提供三种主要形式的缓存
    cache、session、cookie的区别
    常用简写快速生成代码
    EF数据迁移
    源文件与模块生成时的文件不同,是否希望调试器使用它?
    强命名程序集组成与作用
    centOS docker运行Asp.net Core程序
    docker
    .net常用的代码生成工具
  • 原文地址:https://www.cnblogs.com/qkblogs/p/12881029.html
Copyright © 2011-2022 走看看