kakke18’s blog

ゆるふわ学生エンジニア

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のアルゴリズムを書くことはできます。 このように責務を分けることによって、オブジェクト指向らしさが出るのではないかなと思ってます。