码迷,mamicode.com
首页 > Web开发 > 详细

php实现设计模式之 原型模式

时间:2014-10-27 17:07:14      阅读:185      评论:0      收藏:0      [点我收藏+]

标签: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 类图

bubuko.com,布布扣

 

说一下浅拷贝和深拷贝

大学学习c语言时,提到过这两个的区别。我依稀记得是 值拷贝是深拷贝,而指针拷贝是浅拷贝。

浅复制呢又称为浅拷贝,深复制又称为深拷贝。

浅复制的话,就是通过一个原型实例(这里暂称为老对象)克隆所得到的对象(这里暂时称为新对象),

而这个新对象中所有的值类型变量都含有与老对象相同的值,

但是,新对象所有的对其他对象的引用却是和老对象指向同一个地方,

即对引用类型来说,老对象和新对象指向同一个引用对象。

深复制呢,和浅复制就一点不同,那就是,

新对象所有的对其他对象的引用都是指向了复制过的对象,而不再是和老对象指向同一个对象。

php实现设计模式之 原型模式

标签:blog   http   io   sp   div   on   log   cti   bs   

原文地址:http://www.cnblogs.com/taijun/p/4054577.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!