読者です 読者をやめる 読者になる 読者になる

プログラミングの魔物

エラー、バグ、仕様変更と戦うブログ

3.TemplateMethod 具体的な処理をサブクラスに任せる

スーパークラスで抽象メソッドを使ったロジック(テンプレートメソッド)の構築、サブクラスで抽象メソッドの実装。

f:id:p-monster:20121217203037p:plain

AbstractClass・・・テンプレートメソッドを実装し、抽象メソッドの宣言
ConcreteClass・・・抽象メソッドの実装

ロジックが共通化できる。アルゴリズムの抽出。
同じ手順で処理を行う別々のプログラムにおいて、ロジックを般化できる。

クラス階層はサブクラスから見ると

  • スーパークラスで定義されたメソッドが利用できる
  • メソッドを加えるだけで新しい機能を追加できる
  • オーバーライドで振る舞いを変更できる

スーパークラスから見ると

  • サブクラスがメソッドを実装することを期待する
  • サブクラスに対してメソッドの実装を要請する。

関連しているパターン

FactoryMethod・・・インスタンス生成にTemplateMethodパターンを使用
Strategy・・・TemplateMethodは継承を利用して動作を変更。Strategyは委譲を利用して動作を変更

参考:

増補改訂版Java言語で学ぶデザインパターン入門

増補改訂版Java言語で学ぶデザインパターン入門