Head First設計モード学習ノート(九)テンプレート方法モード
1050 ワード
≪テンプレート・メソッド・モード|Template Method Mode|emdw≫:操作中のアルゴリズムのスケルトンを定義し、いくつかのステップをサブクラスに遅延します.テンプレート・メソッドは、サブクラスがアルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できるようにします.
方法モードの特徴:不変の行為をスーパークラスに移し、サブクラスの重複するコードを除去して彼の優位性を体現する.
不変および可変の動作がメソッドに混在すると、不変の動作がサブクラスで繰り返され、テンプレートメソッドモードは、これらの不変の動作をスーパークラスに移動し、重複コードを回避します.
注意:テンプレートメソッドでは、フックを使用してコードのセグメントを実行するかどうかを制御できます.(以下のコードのように、サブクラスはcondition()メソッドを上書きしてaction 2()を実現するかどうかを制御することができる)
JUnitのTestCaseとそのサブクラスはテンプレートメソッドモードの例である.
JAvaの配列ソートは典型的なテンプレートメソッドである.Sort()
方法モードの特徴:不変の行為をスーパークラスに移し、サブクラスの重複するコードを除去して彼の優位性を体現する.
不変および可変の動作がメソッドに混在すると、不変の動作がサブクラスで繰り返され、テンプレートメソッドモードは、これらの不変の動作をスーパークラスに移動し、重複コードを回避します.
注意:テンプレートメソッドでは、フックを使用してコードのセグメントを実行するかどうかを制御できます.(以下のコードのように、サブクラスはcondition()メソッドを上書きしてaction 2()を実現するかどうかを制御することができる)
void doAction(){
action1();
if(condition()){
action2();
}
}
boolean condition(){
return true;
}
JUnitのTestCaseとそのサブクラスはテンプレートメソッドモードの例である.
public void runTest() throws Throwable {
setUp();
try {
runTest();
}
finally {
tearDown();
}
}
JAvaの配列ソートは典型的なテンプレートメソッドである.Sort()