Templete Method-具体的な処理をサブクラスにまかせる-
Java言語で学ぶデザインパターン入門 の第3章を参考にしました。
Templete Methodパターンとは
本書には以下のように記載されています。
スーパークラスで処理の枠組みを定め、サブクラスでその具体的内容を定める。
Templeteには、「雛形」という意味があります。 Templete Methodパターンとは、この「雛形」を利用したデザインパターンです。
Templete Methodパターンの登場人物
- AbstractClass(抽象クラス役)
- Templete Methodで使っている抽象メソッドを宣言
- Templete Methodを実装
- ConcreteClass(具象クラス役)
- AbstractClassで宣言された抽象メソッドを実装
実装
こちらを参考にしてください。
- AbstractClassであるAbstractDisplayクラスのdisplayメソッド(これがTemplete Method)において、以下のようなロジックを実装している。
- openメソッドを呼ぶ
- printメソッドを5回呼ぶ
- closeメソッドを呼ぶ
- ConcreteClassであるCharDisplayクラスやStringDisplayクラスにおいて、上記の3つのメソッドを実装している。
Templete Methodパターンを使うことのメリット
- ロジックと実装を切り離すことができる。
- ロジックを共通化することができる。
まとめ
抽象クラスはインスタンスを作ることができません。 さらに、抽象メソッドにはメソッドの本体が書かれていないので、具体的な処理はわかりません。 しかし、Template Methodパターンのように抽象メソッドを使って、 Templete Methodのアルゴリズムを書くことはできます。 このように責務を分けることによって、オブジェクト指向らしさが出るのではないかなと思ってます。