【テンプレートメソッドパターン】
Template Methodパターン とは?
💡 親が「順番」を決め、子が「中身」を埋める料理レシピ方式
📌 このページのポイント
- 処理の骨格(テンプレートメソッド)を親クラスに定義する
- 可変部分をサブクラスがオーバーライドして実装する
- GoFの行動パターン(Behavioral Pattern)のひとつ
- フックメソッドで任意の処理をサブクラスが差し込める
Template Methodパターンって、テンプレートを使う感じなの?
そうだよ!親クラスに「こういう順番で処理してね」という骨格(テンプレートメソッド)を定義して、詳細はサブクラスに任せるパターンだよ。
具体的にどんな場面で使うの?
Strategyパターンとどう違うの?
Strategyパターンはアルゴリズム全体を別オブジェクトに委譲するんだ。Template Methodは継承ベースで流れを固定するよ。「継承で解決する」か「委譲で解決する」かの違いだね。
フックメソッドって何なの?
注意点はある?
継承を使うから、親クラスが変わるとすべてのサブクラスに影響が出るんだ。また継承階層が深くなると読みにくくなるよ。柔軟性が必要ならStrategyパターンの方が向いていることも多いんだ。
まとめ:ざっくりこれだけ覚えればOK!
「Template Methodパターン」って出てきたら「流れは親クラスが固定し、中身をサブクラスが決めるパターン」と思えればだいたいOK!
📖 おまけ:英語の意味
「Template Method Pattern」 = テンプレートメソッドパターン
💬 「Template(雛形)」という言葉通り、処理の雛形を親クラスが提供し、子クラスが穴を埋めるというGoFデザインパターンのひとつだよ