标签:blog http io sp div on log cti bs
<?php /* * 原型模式:通过复制已经存在的对象来创建新对象。 * 通过原型实例指定创建对象的种类,并且通过copy这些原型创建信的对象 * 是创建型模式 */ interface show{ public function copy(); } /* * */ class showgirl implements show{ public function say(){ echo ‘I am beautiful‘; } public function copy(){ return clone $this;//浅拷贝 //深拷贝 // $a = serialize($this); // $b = unserialize($a); // return $b; } } $a = new showgirl(); $a->say(); $b = $a->copy();//通过copy已经存在的对象a实现创建新对象b $b->say(); ?>
UML 类图
说一下浅拷贝和深拷贝
大学学习c语言时,提到过这两个的区别。我依稀记得是 值拷贝是深拷贝,而指针拷贝是浅拷贝。
浅复制呢又称为浅拷贝,深复制又称为深拷贝。
浅复制的话,就是通过一个原型实例(这里暂称为老对象)克隆所得到的对象(这里暂时称为新对象),
而这个新对象中所有的值类型变量都含有与老对象相同的值,
但是,新对象所有的对其他对象的引用却是和老对象指向同一个地方,
即对引用类型来说,老对象和新对象指向同一个引用对象。
深复制呢,和浅复制就一点不同,那就是,
新对象所有的对其他对象的引用都是指向了复制过的对象,而不再是和老对象指向同一个对象。
标签:blog http io sp div on log cti bs
原文地址:http://www.cnblogs.com/taijun/p/4054577.html