标签:
原文链接: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/
标签:
原文地址:http://www.cnblogs.com/orlion/p/5350909.html