【テンプレートメソッドパターン】
Template Methodパターン とは?
最終更新:
💡 親が「順番」を決め、子が「中身」を埋める料理レシピ方式
アルゴリズムの骨格を親クラスに定義し、具体的な処理の詳細をサブクラスに任せるデザインパターン。処理の流れを固定しつつ、一部をカスタマイズできる。
📌 このページのポイント
- 処理の骨格を親クラスのテンプレートメソッドにまとめる
- 変えたい手順をサブクラスのオーバーライドで実装する
- 共通の手順を再利用しながら、特定の手順の内容を変えられる
- フックで任意のカスタマイズ箇所を用意することもある
Template Methodパターンはどんな仕組み?
親クラスが処理の骨格を定義し、その途中で呼ぶ一部のメソッドを子クラスが実装するパターンだよ。処理の共通部分を再利用しながら、特定の手順の内容を変えられるんだ。
具体的な例を教えて!
親に書けば順番は絶対に変えられない?
共通の順序を親に集約するのが意図だよ。ただしテンプレートメソッド自体を上書きできる言語や設計もある。順序を保つ必要があるなら、どこを上書き可能にするかを明確にすることが大切なんだ。
フックメソッドって何?
Strategyとはどう違うの?
まとめ:ざっくりこれだけ覚えればOK!
「Template Methodパターン」って出てきたら「流れは親クラスが固定し、中身をサブクラスが決めるパターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Template Method Pattern」 = テンプレートメソッドパターン
💬 「Template(雛形)」という言葉通り、処理の雛形を親クラスが提供し、子クラスが穴を埋めるというGoFデザインパターンのひとつだよ