分析模板方法设计模式
生活随笔
收集整理的這篇文章主要介紹了
分析模板方法设计模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先來看看用來比較int和String分別進(jìn)行1000次運(yùn)算求需要的時間進(jìn)行比較,代碼的實(shí)現(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();//結(jié)束時間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;} } //模板方法設(shè)計(jì)模式 class TemplateMethosDemo{} public class Main{private static Scanner sc;public static void main(String[] args){//統(tǒng)計(jì)String連接10000次此時和int相加的時間差StringOperate st=new StringOperate();System.out.println(st.doWork());IntOperate in=new IntOperate();System.out.println(in.doWork());} }通過上述代碼我們可以看出即使我們實(shí)現(xiàn)了上述的功能,但是代碼不僅執(zhí)行的效率低而且代碼重復(fù)冗余,于是想到利用模板設(shè)計(jì)方法來實(shí)現(xiàn):
package com.test;import java.util.Scanner; //模板方法設(shè)計(jì)模式 abstract class AbstractOperateTimeTemplate{//模板方法:總體算法的骨架,子類不能修改算法的結(jié)構(gòu)因此用finalfinal public long getTotalTime(){long begin=System.currentTimeMillis();//開始時間//具體操作(留給子類去完成),先調(diào)用子類中的再調(diào)用父類中的方法this.doWork();long end=System.currentTimeMillis();//結(jié)束時間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)計(jì)String連接10000次此時和int相加的時間差System.out.println(new StringOperate().getTotalTime());System.out.println(new IntOperate().getTotalTime());} }上述代碼中doWork()也叫鉤子函數(shù)(回調(diào)函數(shù))。
總結(jié)
以上是生活随笔為你收集整理的分析模板方法设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web通讯录之登录注册界面
- 下一篇: WPF自定义控件的三种方式