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."); ?>