分析模板方法设计模式
生活随笔
收集整理的這篇文章主要介紹了
分析模板方法设计模式
小編覺得挺不錯的,現(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ù))。
總結
以上是生活随笔為你收集整理的分析模板方法设计模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web通讯录之登录注册界面
- 下一篇: WPF自定义控件的三种方式