PHP デザインパターン(Template Methodパターン)
Template Methodパターン
↓買ったので、JavaをPHPに読み替えて勉強。そのメモ。
サンプルプログラム
スーパークラスAbstractDisplayで処理の枠組みを決めて、サブクラスStringDisplayで具体的な内容を決める
<?php abstract class AbstractDisplay{ /** * サブクラスに実装を任せる抽象メソッド */ protected abstract function output(); /** * この抽象クラスで実装しているメソッド */ final function display(){ for($i=0; $i<10; $i++){ $this->output(); } } } /** * サブクラスを実装 */ class StringDisplay extends AbstractDisplay{ private $string; function __construct($string){ $this->string = $string; } function output(){ echo $this->string."orz"; } } $d = new StringDisplay("もうだめだ。。"); $d->display(); ?>
Template Methodパターンでうれしいこと
スーパークラスAbstractDisplayで実装したdisplay()は、サブクラスでは共通のものとなるため
display()にバグがあった場合でもスーパークラスのみ修正すればよい。