原型模式

原文链接: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 PrototypeCDPrototypeImpl('obj');
$cloneCD = $cd->copy();
var_dump($cloneCD->title);
var_dump($cd->title);

    
关于浅复制与深复制可参见:http://www.orlion.ga/731/

原文地址:https://www.cnblogs.com/orlion/p/5350909.html