加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

原型模式

发布时间:2020-12-14 04:46:33 所属栏目:百科 来源:网络整理
导读:原文链接:http://www.orlion.ga/727/ 解释: ????原型设计模式创建对象的方式是复制和克隆初始对象或原型,这种方式比创建新实例更为有效,在需要经常创建资源集中型对象的情况下,原型模式可以提供更快速执行的途径。 ? 代码: ????声明一个克隆自身的接口:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读