Re: Template Methodパターン

元となるコードを見てないので、対象コードでの Template Methodパターン適用の是非は分かりません。が、オレはよく使いますよ>Template Methodパターン。

サブクラスA、Bのアルゴリズムが似てるけど微妙に違うなんて場合は、ベースとなるアルゴリズムスーパークラスへまとめておいて差異の部分を各サブクラスで実装、みたいな。

これによって、似たようなアルゴリズムを繰り返し書かない、DRY原則を守れます。

それと。

何か仕様を拡張したくてもスーパークラスの仕様に縛られて柔軟性を書いてしまうし、スーパークラスを作るのに将来の拡張性を考慮するのは YAGNI原則に反する。

みたいな状況は確かにイヤですね。オレが同じ状況に陥ったら、スーパークラスのテンプレート部をガシガシとリファクタリングしちゃいますねー。あと、スーパークラスのテンプレート部を作るときは将来の拡張のことなど考えないことが多いです。あくまでも、その時点での、アルゴリズムのまとめ上げだけが目的で。