在學習了模板方法設計模式感覺有必要去寫一個總結。於是就有了這篇,可能知識點比較瑣碎比較少,但是重在
積累。
那麼什麼時候使用模板方法設計模式呢?
在定義功能時,功能的一部分是確定的,但是有一部分是不確定,而確定的部分在使用不確定的部分。那麼這時
就將不確定的部分暴露出去,由該類的子類去完成。此時就要用到模板方法設計模式。
/**
* 需求:獲取一段程序的運行時間。
* @author 淼淇
*
*/
abstract class GetTime
{
public final void getTime()
{
long start = System.currentTimeMillis();
runcode();
long end = System.currentTimeMillis();
System.out.println("程序運行時間爲"+(end-start)+"毫秒");
}
public abstract void runcode();
}
class ForDemo extends GetTime//子類繼承父類
{
public void runcode()//複寫父類中的方法
{
for(int x=0; x<4000; x++)
{
System.out.println(x);
}
}
}
public class Test015
{
public static void main(String[] args)
{
// TODO Auto-generated method stub
ForDemo fd = new ForDemo();//創建一個子類對象
fd.getTime();//子類調用getTime()方法
}
}
在上述例子中,獲取程序運行時間這個方法是確定的,但是程序運行的代碼是不確定的,此時我們就用到了模板
方法設計模式,把要運行的代碼作爲一個抽象類暴露出去,通過讓子類去繼承父類,並且把抽象方法複寫來完成程序
的運行時間的測算。(編寫期間子類我少寫了一個public,結果提示權限不夠無法複寫,以後一定要注意。默認權限 <
public權限)
本來想把模板方法設計模式跟接口寫到一起的,但是發現接口的內容可能比較多,寫的太長不適合複習和總結,
所以只好先寫一篇比較短小的模板方法設計模式,之後更新接口的相關知識。通過對這個模式的學習和理解,在遇到
類似的需求的時候應對就可以稍微的輕鬆一些。現在可能我的認識還不夠深,學到的都是寫淺顯的方法,但是學到這
個設計思想,纔是我的目的。努力,加油!~