行為模式之Template

來源:互聯網
上載者:User

Template定義:

定義一個操作中演算法的
骨架,將一些步驟的執行延遲到其子類中.

其實Java的抽象類別本來就是
Template模式,因此使用很普遍.而且很容易理解和使用,我們直接以樣本開始:

public
abstract class Benchmark
{


  
/**


  
*

下面操作是我們希望在子類中完成


  
*/


  
public
abstract void benchmark();

  
/**
  * 重複執行benchmark次數
  */
  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;
  }
}
}

在上例中,我們希望重複執行
benchmark()操作,但是對benchmark()的具體內容沒有說明,而是延遲到其子類中描述:

public
class MethodBenchmark extends Benchmark
{


  
/**


  
*

真正定義
benchmark

內容


  
*/


  
public
void benchmark() {



    
for (int i = 0; i < Integer.MAX_VALUE; i++){


   


  
System.out.printtln("i="+i);

 


  


   
}


  
}
}

至此,Template模式已經完成,是
不是很簡單?看看如何使用:

Benchmark operation = new
MethodBenchmark();
long duration =
operation.repeat(Integer.parseInt(args[0].trim()));
System.out.println("The
operation took " + duration + " milliseconds");

 

也許你以前還疑惑抽象類別有什麼用,現在你
應該徹底明白了吧? 至於這樣做的好處,很顯然啊,擴充性強,以後Benchmark內容變化,我只要再做一個繼承子類就可以,不必修改其他應用代碼.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.