テンプレートパターンの定義:操作中のアルゴリズムのスケルトンを定義し、サブクラスへのいくつかのステップの実行を遅らせます。
実際、Java抽象クラスはもともとテンプレートパターンであるため、使用するのが非常に一般的です。そして、理解して使用するのは簡単です。例から始めましょう。
コードコピーは次のとおりです。
パブリックアブストラクトクラスベンチマーク
{
/**
*次の操作は、サブクラスで完了したいものです*/
パブリックアブストラクトボイドベンチマーク();
/**
*繰り返しベンチマーク実行の数*/
パブリックファイナルロングリピート(int count){
if(count <= 0)
0を返します。
それ以外 {
long starttime = system.currenttimemillis();
for(int i = 0; i <count; i ++)
ベンチマーク();
long stoptime = system.currenttimemillis();
停止時間を返します - 起動時刻。
}
}
}
上記の例では、benchmark()操作を繰り返し実行しますが、benchmark()の特定のコンテンツを指定するのではなく、サブクラスの説明に遅延します。
コードコピーは次のとおりです。
パブリッククラスのメソッドベンチマークはベンチマークを拡張します
{
/**
*ベンチマークコンテンツを本当に定義します*/
public void benchmark(){
for(int i = 0; i <integer.max_value; i ++){
system.out.printtln( "i ="+i);
}
}
}
この時点で、テンプレートモードが完了しました、それは非常に簡単ではありませんか?使用方法をご覧ください:
コードコピーは次のとおりです。
ベンチマーク操作= new Methodsbenchmark();
long duration = operation.repeat(integer.parseint(args [0] .trim()));
system.out.println( "操作が" + duration + "millionseconds");
抽象クラスの使用は何なのか疑問に思っていたかもしれませんが、今では完全に理解する必要がありますよね?これを行うことの利点については、将来的には継承されたサブクラスを作成する必要があり、他のアプリケーションコードを変更する必要がないことは明らかです。