原型模式

Posted Orlion

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原型模式相关的知识,希望对你有一定的参考价值。

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

以上是关于原型模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之原型模式(Prototype)详解及代码示例

设计模式课程 设计模式精讲 9-2 原型模式coding

设计模式--原型模式

5.原型模式

设计模式原型模式

csharp 设计模式 - 原型 - 结构代码