定義
一部のステップをサブクラスに延期しながら、アルゴリズムの操作のフレームワークを定義します。これにより、サブクラスは、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。
このデザインパターンの役割分担は比較的単純です
抽象テンプレートクラス
具象テンプレートクラス
抽象テンプレートクラスには、いくつかのメソッドが含まれています: テンプレートメソッド、具象メソッド、抽象メソッド、フック方式。
テンプレートメソッド
は、特定のメソッド、実装される抽象メソッド、フックメソッドなどを呼び出すアルゴリズムの実装手順を決定します。アルゴリズム実行用のテンプレートです。
具象メソッド
具象メソッドはアルゴリズムのより安定した部分であるため、メソッドの具体的な実装は抽象クラスで与えられます。
抽象メソッド
抽象メソッドは、定義にあるとおり、サブクラスの実装が遅延されるメソッドです。
フックメソッド
一般的なテンプレートメソッドはデフォルトの実装を提供します。このメソッドは状況に応じてサブクラスでオーバーライドしたり書き換えたりできます。
/** * Created by tiantian on 2018/7/28 */public abstract class AbstractTemplateMethod { public void templateMethod() { implementedMethod(); abstractMethod(); hookMethod(); // ... more than method invoke } public void anotherTemplateMethod() { // do other things } public abstract void abstractMethod(); public void hookMethod() {} public void implementedMethod() { System.out.println("I have been implemented in TemplateMethod class."); } // ... more than method abstract or implemented.}
/** * Created by tiantian on 2018/7/28 */public class ConcreteTempleteMethod extends AbstractTemplateMethod { @Override public void abstractMethod() { System.out.println("Do something"); } @Override public void hookMethod() { System.out.println("Do something in hookMethod"); } }
一部の手順をサブクラスに延期しながら、アルゴリズムで操作フレームワークを定義します。これにより、サブクラスは、アルゴリズムの構造を変更せずに、アルゴリズムの特定のステップを再定義できます。
このデザインパターンの役割分担は比較的単純です
抽象テンプレートクラス
具象テンプレートクラス
抽象テンプレートクラスには、テンプレートメソッド、具象メソッド、抽象メソッド、フック方式。
テンプレートメソッド
は、特定のメソッド、実装される抽象メソッド、フックメソッドなどを呼び出すアルゴリズムの実装手順を決定します。アルゴリズム実行用のテンプレートです。
具象メソッド
具象メソッドはアルゴリズムのより安定した部分であるため、メソッドの具体的な実装は抽象クラスで与えられます。
抽象メソッド
抽象メソッドは、定義にあるとおり、サブクラスの実装が遅延されるメソッドです。
フックメソッド
一般的なテンプレートメソッドはデフォルトの実装を提供します。このメソッドは状況に応じてサブクラスでオーバーライドしたり書き換えたりできます。
/** * Created by tiantian on 2018/7/28 */public abstract class AbstractTemplateMethod { public void templateMethod() { implementedMethod(); abstractMethod(); hookMethod(); // ... more than method invoke } public void anotherTemplateMethod() { // do other things } public abstract void abstractMethod(); public void hookMethod() {} public void implementedMethod() { System.out.println("I have been implemented in TemplateMethod class."); } // ... more than method abstract or implemented.}
/** * Created by tiantian on 2018/7/28 */public class ConcreteTempleteMethod extends AbstractTemplateMethod { @Override public void abstractMethod() { System.out.println("Do something"); } @Override public void hookMethod() { System.out.println("Do something in hookMethod"); } }
関連記事:
JAVAデザインパターンファクトリパターン(シンプルファクトリパターン+ファクトリメソッドパターン)
関連ビデオ:
以上がJava23デザインパターンの詳細事例解説:テンプレートメソッドパターン(コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。