/**
* @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(每次執行結果或許不同)
模板方法模式其實是利用抽象類來設計程序的骨架,將具體的部分留給子類實現,調用父類的方法運行子類實現的方法並完成一些額外的功能,如打印消耗時間等