PHP デザインパターン(Prototypeパターン)


Prototypeパターン

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

サンプルプログラム
<?php
interface Product{
function output($string);
function createClone();
}
/*
*
* Productインタフェースを使ってインスタンスを複製するクラス
*
*/
class Manager{
private $showcase = array();
function register($name, $proto){
$this->showcase[$name] = $proto;
}
function create($protoname){
$p = $this->showcase[$protoname];
return $p->createClone();
}
}
class MessageBox implements Product{
private $decochar;
function __construct($decochar){
$this->decochar = $decochar;
}
function output($string){
$length = mb_strlen($string);
for($i=0; $i<$length+4; $i++){
echo $this->decochar;
}
echo "\n";
echo $this->decochar." ".$string." ".$this->decochar;
echo "\n";
for($i=0; $i<$length+4; $i++){
echo $this->decochar;
}
echo "\n";
}
function createClone(){
$Product = clone $this;
return $Product;
}
}
//準備
$manager = new Manager();
$mbox    = new MessageBox('*');
$manager->register("warning box", $mbox);
//生成
$Product = $manager->create("warning box");
$Product->output("Hello, world.");
?>
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

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