---------------------- <a href="http://edu.youkuaiyun.com"target="blank">ASP.Net+Android+IO开发S</a>、<a href="http://edu.youkuaiyun.com"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.youkuaiyun.com"target="blank">ASP.Net+Android+IOS开发</a>、<a href="http://edu.youkuaiyun.com"target="blank">.Net培训</a>、期待与您交流! ----------------------
详细请查看:<ahref="http://edu.youkuaiyun.com" target="blank">http://edu.youkuaiyun.com</a>
转载于:https://blog.51cto.com/19901111/1220309