テンプレートメソッドパターンは、次のように定義されます。
アルゴリズムのスケルトンまたはステップはメソッドで定義され、いくつかのステップは実装のためにサブクラスに遅れます。テンプレートメソッドにより、サブクラスはアルゴリズム構造を変更せずにアルゴリズムのいくつかのステップを再定義できます。
テンプレートメソッドは、基本クラスの操作プロセスシーケンスを定義します。これにより、ステップが順番に実行されるようになります。いくつかのステップのいくつかの特定の実装が基本クラスで宣言されており、いくつかの変更ステップの特定の実装がサブクラスに引き渡されて実装されているため、サブクラスへのいくつかのステップが遅れます。テンプレートメソッドの最大の利点の1つは、アルゴリズム全体の実行ステップを制御して、特定の厳格な順序でビジネスプロセスを設定できることです。
このメソッドは、アルゴリズムを一連のステップに定義します。この手順では、サブクラスがカスタム実装を実行するすべてのステップが抽象的なメソッドとして定義されます。抽象的な基本クラスの特徴は、テンプレートメソッドが一般に最終的に設定されていることです。これにより、サブクラスがアルゴリズムの手順を上書きしたり、ベースクラスに直接同じ操作または手順を実装したり、変更ステップの一部を抽象とサブクラスに設定したりすることです。
Java実装の例
クラス図:
/ ***基本的なフレームワークを提供するビジネスプロセステンプレート*/ public abstract class Basetemplate {public Abstract void part1(); public abstract void part2();パブリックアブストラクトvoid part3(); //厳密に実験的な結果を得るために、最終void usetemplatemethod(){part1(); part2(); part3(); }} / ** *テンプレート実装方法1 */パブリッククラスTemplateMethodはBasetemplateを拡張します{@Override public void part1(){system.out.println( "Template Method 1"); } @Override public void part2(){system.out.println( "テンプレートメソッド2"); } @Override public void part3(){system.out.println( "テンプレートメソッド3"); }} / ** *テンプレート実装方法2 * @Author Stone * */ public class temeTemethod2 extends Basetemplate {@override public void part1(){system.out.println( "テンプレートメソッド11"); } @Override public void part2(){system.out.println( "テンプレートメソッド22"); } @Override public void part3(){system.out.println( "テンプレートメソッド33"); }} public class test {public static void main(string [] args){basetemplate tm = new TemplateMethod(); tm.usetemplatemethod(); System.out.println( "");ベーステンペーンtm2 = new TemplateMethod2(); tm2.usetemplatemethod(); }}印刷:
テンプレート方法1テンプレート方法2テンプレート2テンプレート3テンプレート11テンプレート方法22テンプレート方法33