GoFのデザインパターンのTemplateMethodパターンを勉強してみます。
TemplateMethodパターン
スーパークラスで処理の枠組みを決め、サブクラスで具体的な内容を定めるデザインパターンです。
サブクラスに実装を作るため、スーパークラスに影響を与えないで類似クラスを作成できます。
使い方
class Report {
public abstract function header();
public abstract function body();
public abstract function footer();
public function output(){
this.header();
this.body();
this.footer();
}
}
class Attendance extends Report {
public function header(){
echo "出勤簿";
}
public function body(){
echo "内容";
}
public function footer(){
echo "フッター";
}
}
class Statistic extends Report {
public function header(){
echo "統計";
}
public function body(){
echo "結果";
}
public function footer(){
echo "フッター";
}
}
outputを呼び出すことで、サブクラスのそれぞれの内容を出力することができます。
雑記
生成に関するパターンの中で理解しやすいTemplateMethodパターンです。
生成に関するパターンの違いがあまり理解できていないので細かく理解していきます。
パターンの説明を自分の言葉で説明できていないため、参考のページや本からほぼそのまま書いてしまっています。
言葉にするのが難しいです。