原文链接:
解释:
原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效,在需要经常创建资源集中型对象的情况下,原型模式可以提供更快速执行的途径。
代码:
声明一个克隆自身的接口:
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);
关于浅复制与深复制可参见: