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

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

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