今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

Template Method パターン

とある理由で、他人が書いたソースを読んでいる。Template Method パターンが使われている。読みにくい。最悪。スーパークラスの実装をきっちりと把握しておかないと、挙動を追いきれない。きっちりと把握するほどの空容量は、旧型の脳ミソには残されていない。
Template Method パターンの仲間の Factory Method パターンならこれほど困らない。メソッドがひとつしかないから。でも、Template Method パターンはスーパークラスアルゴリズムを作っていて、そのアルゴリズムを形成する複数のコードの断片がサブクラスで実装される。
はっきり言って、Template Method パターンなんて、そうそう使うもんじゃない。Struts フレームワークから呼び出されるような、グローバルな決め事とするのならまだいい。でも、ローカルなアルゴリズムのために Template Method パターンを使うのは嬉しくない。スーパークラスの仕様を理解しなきゃ追加や変更ができないし、何か仕様を拡張したくてもスーパークラスの仕様に縛られて柔軟性を書いてしまうし、スーパークラスを作るのに将来の拡張性を考慮するのは YAGNI原則に反する。
Struts だって、Template Method パターンを選択したために拡張性に苦しんでいたりするのかも知れない。本当のところは知らんけど。業務で Webシステムなんて書いたことないしー。