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();
	}
}

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

  

posted @ 2020-05-13 10:52  柚子李子  阅读(509)  评论(0编辑  收藏  举报