kazu22002の技術覚書

PHPer, Golang, AWS エンジニアの日々

デザインパターン勉強 TemplateMethodパターン

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パターンです。

生成に関するパターンの違いがあまり理解できていないので細かく理解していきます。

パターンの説明を自分の言葉で説明できていないため、参考のページや本からほぼそのまま書いてしまっています。

言葉にするのが難しいです。

参考

www.techscore.com