Template Methodパターン
Template Methodパターンは、処理フローのテンプレートを用意するデザインパターンです。
自分なりにTemplate Methodパターンをクラス図にまとめてみました。
Template Methodパターンのクラス図
Template Methodパターンの解説
抽象クラスのTemplateClassのtemplateメソッドで、テンプレート(型)となる処理フローを定義する。
具体的には、templateメソッド内で、抽象メソッドであるfunc1,2,3メソッドを順番に実行するような処理にする。
このTemplateClassを継承する具象クラス(ChildClass1,2)では、この抽象メソッドfunc1,2,3をオーバーライドする必要があるので、その処理の中身を記述する。
これは大枠として同じような処理の流れが行われるが少し処理内容が異なるような場合の処理を、整理できます。
テンプレートを作らずにif文で条件分岐して1つにまとめることもできますが、条件分岐が多すぎる場合など1つのメソッドでは冗長になる場合に有効と思います。
Template Methodパターンをどういう場合に使うか
上記に書いているように大枠の処理が同じだが部分的に異なる場合、例えば商品の値引き処理を行うが商品の種類によって値引き処理が異なる場合などに使用できる。
PlantUMLでTemplate Methodパターンのクラス図を記述する
文頭のTemplate Methodパターンのクラス図をPlantUMLで書いたときのソースです。
@startuml Template Method
abstract class TemplateClass{
+ void template() func1,2,3を呼び出す
# {abstract} void func1()
# {abstract} void func2()
# {abstract} void func3()
}
class ChildClass1 extends TemplateClass{
# void func1()
# void func2()
# void func3()
}
class ChildClass2 extends TemplateClass{
# void func1()
# void func2()
# void func3()
}
@enduml
参考サイトURL
PHPによるデザインパターン入門 – TemplateMethod〜処理を穴埋めする
3.TemplateMethod パターン | TECHSCORE(テックスコア)