PHP デザインパターン(Template Methodパターン)


Template Methodパターン

↓買ったので、JavaをPHPに読み替えて勉強。そのメモ。

サンプルプログラム

f:id:taramonera:20101124172052p:image

スーパークラス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()にバグがあった場合でもスーパークラスのみ修正すればよい。

  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。