パターン指向リファクタリング:TemplateMethodの形成

今回もメモ。

複数のサブクラスの2つのメソッドが、同じ順番で似たようなステップを実行(ステップはまったく同じではない)

Template Methodの不変な振る舞い

  • 呼び出されるメソッドとその順序
  • サブクラスでオーバーライドしなければならない抽象メソッド
  • サブクラスでオーバーライドすることのできるフックメソッド(具象メソッド)

利点

  • サブクラス間の重複したコードを削除可能
  • 汎用のアルゴリズムのステップを簡潔にし、効果的に伝えることができる
    • 可読性が本当にあがる?
  • サブクラスで簡単に、アルゴリズムをカスタム可能

欠点

  • アルゴリズムを肉付けするためにサブクラスで多くのメソッドを実装する必要がある
  • 設計が複雑に


今回は実装例もみたけど、最後にあるように、著者はわかりやすいと感じたみたいだけ・・・うーん。