J2EE設(shè)計模式之Template
Template定義:
定義一個操作中算法的骨架,將一些步驟的執(zhí)行延遲到其子類中.
其實Java的抽象類本來就是Template模式,因此使用很普遍.而且很容易理解和使用,我們直接以示例開始:
- public abstract class Benchmark
 - {
 - /**
 - * 下面操作是我們希望在子類中完成
 - */
 - public abstract void benchmark();
 - /**
 - * 重復(fù)執(zhí)行benchmark次數(shù)
 - */
 - public final long repeat (int count) {
 - if (count <= 0)
 - return 0;
 - else {
 - long startTime = System.currentTimeMillis();
 - for (int i = 0; i < count; i++)
 - benchmark();
 - long stopTime = System.currentTimeMillis();
 - return stopTime - startTime;
 - }
 - }
 - }
 
在上例中,我們希望重復(fù)執(zhí)行benchmark()操作,但是對benchmark()的具體內(nèi)容沒有說明,而是延遲到其子類中描述:
- public class MethodBenchmark extends Benchmark
 - {
 - /**
 - * 真正定義benchmark內(nèi)容
 - */
 - public void benchmark() {
 - for (int i = 0; i < Integer.MAX_VALUE; i++){
 - System.out.printtln("i="+i);
 - }
 - }
 - }
 
至此,Template模式已經(jīng)完成,是不是很簡單?看看如何使用:
- Benchmark operation = new MethodBenchmark();
 - long duration = operation.repeat(Integer.parseInt(args[0].trim()));
 
也許你以前還疑惑抽象類有什么用,現(xiàn)在你應(yīng)該徹底明白了吧? 至于這樣做的好處,很顯然啊,擴展性強,以后Benchmark內(nèi)容變化,我只要再做一個繼承子類就可以,不必修改其他應(yīng)用代碼。
【編輯推薦】















 
 
 
 
 
 
 