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

Template Methodパターン

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

サンプルプログラム

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