原型模式
原文链接:http://www.orlion.ga/727/
解释:
原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效,在需要经常创建资源集中型对象的情况下,原型模式可以提供更快速执行的途径。
代码:
声明一个克隆自身的接口:
namespace Prototype; interface CDPrototype{ function copy(); }
具体克隆对象
namespace Prototype; class CDPrototypeImpl implements CDPrototype{ public $title; public function __construct($title){ $this->title = $title; } // 浅复制 public function copy(){ return clone $this; } // 深复制 // public function copy(){ // $serializeObj = serialize($this); // return unserialize($serializeObj); // } public function __clone(){ $this->title = 'This is a clone obj'; // 需要说明的是__clone()魔术方法是在克隆出来的对象中执行的,而不是原型对象 } }
App.php
require 'CDPrototype.php'; require 'CDPrototypeImpl.php'; $cd = new Prototype\CDPrototypeImpl('obj'); $cloneCD = $cd->copy(); var_dump($cloneCD->title); var_dump($cd->title);
关于浅复制与深复制可参见:http://www.orlion.ga/731/