原型模式

前端之家收集整理的这篇文章主要介绍了原型模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

原文链接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/

猜你在找的设计模式相关文章