日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

分析模板方法设计模式

發(fā)布時間:2024/8/23 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分析模板方法设计模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

首先來看看用來比較int和String分別進行1000次運算求需要的時間進行比較,代碼的實現(xiàn):

package com.test;import java.util.Scanner; //String的連接1000次 class StringOperate{private String str;public long doWork(){long begin=System.currentTimeMillis();//開始時間setStr(null);for(int i=0;i<10000;i++){setStr(getStr() + i);}long end=System.currentTimeMillis();//結束時間long time=end-begin;//時間差return time;}public String getStr() {return str;}public void setStr(String str) {this.str = str;} } class IntOperate{private int num=0;public long doWork(){long begin=System.currentTimeMillis();for (int i = 0; i < 10000; i++) {setNum(getNum() + i);}long end=System.currentTimeMillis();long time=end=begin;return time;}public int getNum() {return num;}public void setNum(int num) {this.num = num;} } //模板方法設計模式 class TemplateMethosDemo{} public class Main{private static Scanner sc;public static void main(String[] args){//統(tǒng)計String連接10000次此時和int相加的時間差StringOperate st=new StringOperate();System.out.println(st.doWork());IntOperate in=new IntOperate();System.out.println(in.doWork());} }

通過上述代碼我們可以看出即使我們實現(xiàn)了上述的功能,但是代碼不僅執(zhí)行的效率低而且代碼重復冗余,于是想到利用模板設計方法來實現(xiàn):

package com.test;import java.util.Scanner; //模板方法設計模式 abstract class AbstractOperateTimeTemplate{//模板方法:總體算法的骨架,子類不能修改算法的結構因此用finalfinal public long getTotalTime(){long begin=System.currentTimeMillis();//開始時間//具體操作(留給子類去完成),先調用子類中的再調用父類中的方法this.doWork();long end=System.currentTimeMillis();//結束時間long time=end-begin;return time;}//只能之類修改protected abstract void doWork(); } //String的連接1000次 class StringOperate extends AbstractOperateTimeTemplate{public void doWork(){String str="";for(int i=0;i<10000;i++){str+=i;}}} class IntOperate extends AbstractOperateTimeTemplate{public void doWork(){int num=0;for(int i=0;i<1000000;i++){num+=i;}} }public class Main{public static void main(String[] args){//統(tǒng)計String連接10000次此時和int相加的時間差System.out.println(new StringOperate().getTotalTime());System.out.println(new IntOperate().getTotalTime());} }

上述代碼中doWork()也叫鉤子函數(shù)(回調函數(shù))。

總結

以上是生活随笔為你收集整理的分析模板方法设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。