/**
* @author
* @version 0.1
* 模板设计模式 -- 时间消耗模板
* 使用该模板测试方法的运行时间
*/
public abstract class TimeExpendTemplate {
//创建抽象方法,在子类中具体实现
public abstract void method();
/**
* 创建执行模板,在控制台输出执行method()消耗的时间
*/
public void runMethod(){
Long t1 = System.currentTimeMillis();
method();
Long t2 = System.currentTimeMillis();
System.out.println(t2-t1);
}
}
/**
* 创建TimeExpendTemplateTest类继承TimeExpendTemplate模板,
* 重写method的方法,实例化后调用父类的runMethod方法,
* 在控制台输出method方法运行消耗的时间
* @author
* @version 0.1
*/
public class TimeExpendTemplateTest extends TimeExpendTemplate {
public int getValue(int i){
if(i == 0){
return 0;
}
if (i == 1){
return 1;
}
return getValue(i-1)+getValue(i-2);
}
/**
* 重写父类method方法
*/
@Override
public void method() {
getValue(45);
}
public static void main(String[] args) {
TimeExpendTemplate t = new TimeExpendTemplateTest();
//调用模板中的runMethod方法
t.runMethod();
}
}
运行结果:9137(每次执行结果或许不同)
模板方法模式其实是利用抽象类来设计程序的骨架,将具体的部分留给子类实现,调用父类的方法运行子类实现的方法并完成一些额外的功能,如打印消耗时间等