第3回 Template Methodパターン

NO IMAGE

お疲れ様です。ぽんじりです。
最近寒くて朝起きるのがつらいです。
Template Methodパターン
いつも通り登場人物の紹介です。
■AbstractClass(抽象クラス)の役
テンプレートメソッドを実装するクラス。そのテンプレートメソッドで使われている
抽象メソッドを宣言する。
■ConcreteClass(具象クラス)の役
AbstractClassで定義されている抽象メソッドを具体的に実装します。
○利点
ロジックを共通化できる。
・・・AbstractClassにロジックを書いているため、何かバグが見つかったときに
   修正が楽。同じような動きのクラスにそれぞれロジックを書いていると全て
   直さなければならないが、Template Methodを用いていればAbstractClassを
   修正するだけでよい。
※The Liskov Substitution Principle(LSP)
  スーパークラスの変数にサブクラスのどのようなインスタンスが代入しても
  正しく動作するようにする。
○気を付ける点
スーパークラスでの記述を多くするとサブクラスの記述が楽になる反面、
サブクラスの自由度は減ってしまう。
逆にスーパークラスでの記述が少ないとサブクラスでの記述が増え、
個々のサブクラスで処理の記述が重複する可能性がある。
今回はほとんどメモ書きになってしまいました。
このデザインパターンは汎用性が高そうなので重要ですね!
では。