Template Methodパターン - TypeScriptでのアルゴリズムスケルトン

アルゴリズムのスケルトンを定義するTemplate Methodパターンを学びましょう。データ処理パイプライン、テストフレームワーク、ビルドシステムのTypeScript実装例。

Behavioral

詳細な説明

Template Methodパターン

Template Methodパターンは、基底クラスでアルゴリズムのスケルトンを定義し、サブクラスが全体構造を変更せずに特定のステップをオーバーライドできるようにします。継承によるコード再利用の基本的な技法の一つです。

フックと抽象メソッド

  • 抽象メソッド(必須): サブクラスはこれらを必ず実装しなければなりません。
  • フックメソッド(オプション): デフォルト実装があり、サブクラスがオーバーライドできます。

ハリウッドの原則

Template Methodは「ハリウッドの原則」に従います:「こちらから連絡しないでください。こちらから連絡します。」基底クラスがフローを制御し、適切なタイミングでサブクラスのメソッドを呼び出します。

Template Method vs Strategy

どちらもアルゴリズムの変化を扱います。Template Methodは継承を使用し(サブクラスがステップをオーバーライド)、Strategyは合成を使用します(戦略オブジェクトを注入)。Strategyは実行時に戦略を交換できるためより柔軟ですが、Template Methodは大きなアルゴリズムのいくつかのステップだけを変化させる場合はよりシンプルです。

実世界の例

  • テストフレームワーク: setUp()runTest()tearDown()はTemplate Methodパターンに従います
  • Reactクラスコンポーネント: componentDidMountrendercomponentWillUnmountはライフサイクルテンプレートのフック
  • ビルドツール: ビルドパイプラインのconfigure、compile、linkステップ

ユースケース

Template Methodは、テストフレームワーク(setup-test-teardownライフサイクル)、データ処理パイプライン(extract-transform-load)、ドキュメントジェネレータ(header-content-footer)、コンパイラフェーズ(parse-analyze-generate)、Webフレームワークのリクエスト処理ライフサイクルで使用されています。

試してみる — Design Pattern Reference

フルツールを開く