---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IO開發S</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
3.13 模板方法模式
1、原理:在定義功能時,功能的一部分是確定的,但是有一部分是不確定,而確定的部分在使用不確定部分,那麼這時就將不確定的部分暴露出去,由該類子類去完成。
2、例題:
(1)、 需求:獲取某一段程序運行的時間。
(2)、原理:獲取程序開始和結束的時間並相減即可。
(3)、代碼示例:
abstract class GetTime{//確定的代碼依然放在這個函數中,只有不確定的runCode被覆寫 public final void getTime(){//利用final防止複寫getTime方法 long start = System.currentTimeMillis();//獲取當前時間 runCode(); long end = System.currentTimeMillis(); System.out.println("毫秒"+(end-start)); } public abstract void runCode();//方法體不確定,所以抽象 } class SubTime extends GetTime{ @Override public void runCode() {//由於for循環代碼在本例中i的值不確定,所以將其複寫 for (int i = 0; i < 1000; i++) { System.out.println(i); } } } public class TemplateMethodPattern { public static void main(String[] args) { SubTime gt = new SubTime(); gt.getTime(); //System.out.println("毫秒"+gt); } }
---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Android+IOS開發</a>、<a href="http://edu.csdn.net"target="blank">.Net培訓</a>、期待與您交流! ----------------------
詳細請查看:<ahref="http://edu.csdn.net" target="blank">http://edu.csdn.net</a>