先来去个例子,计算一个程序的运行所需要的时间,可以分三步走,第一步是记录程序开始的时间starttime,第二部是运行程序,第三部就是记录程序结束的使时间。
一般对于很多程序,第一步和第三部都是固定不变的,只有程序有所差别,所以我们把第二部写成一个抽象类。
//模板模式(有四个方法,第四个是将前三个串起来,只是排序不一样)
abstract class TemplateMethod{
/*
* 业务类,这个类必须被实现的。
*/
public abstract void doJob();
/*
* 辅助类,可以被重写,也可以不使用。
*/
public void someTime(){
System.out.println("程序开始");
}
/*
* 这个类是final类
*/
public final long finalclass(){
long l=System.currentTimeMillis() ;
return l;
}
/*
* 这个叫模板方法,template
*/
public long templateMethod(){
long starttime=finalclass();
doJob();
long endtime=finalclass();
return endtime-starttime;
}
}
public class TemplatePattern extends TemplateMethod{
/*
* 业务方法的实现
*/
public void doJob(){
for(int i=0;i<100;i++){
System.out.println("正在执行第 "+i+" 代码");
}
}
}
主程序如下:
public class Text3 {
public static void main(String[] args){
TemplatePattern tm=new TemplatePattern();
System.out.println("运行程序所需要的时间是: "+tm.templateMethod());
//
}