php实现设计模式之 原型模式
2014-10-27 16:44
447 查看
<?php /* * 原型模式:通过复制已经存在的对象来创建新对象。 * 通过原型实例指定创建对象的种类,并且通过copy这些原型创建信的对象 * 是创建型模式 * 有的时候创建一个对象有很多步骤才算是完成一个完整的创建过程,我要再创建一个的话,还得从头开始,不如复制,使用原型模式实现。 * 原型模式还可以某个对象在运行中的状态 */ interface Potrotype{ public function copy(); } //通过在原型类中加一个copy方法,使得这个原型类的实例可以被复制 class Demo implements Potrotype{ private $state; public function setState($state){ $this->state = $state; } public function getState(){ return $this->state; } public function copy(){ return clone $this;//浅拷贝 /* * 深拷贝 */ // $tmp = serialize($this); // $tmp = unserialize($tmp); // return $tmp; } } class Client{ public static function main(){ $obj1 = new Demo(); $obj1->setState(23); $obj2 = $obj1->copy(); $res = $obj2->getState(); echo $res; } } Client::main(); ?>
说一下浅拷贝和深拷贝
大学学习c语言时,提到过这两个的区别。我依稀记得是 值拷贝是深拷贝,而指针拷贝是浅拷贝。
浅复制呢又称为浅拷贝,深复制又称为深拷贝。
浅复制的话,就是通过一个原型实例(这里暂称为老对象)克隆所得到的对象(这里暂时称为新对象),
而这个新对象中所有的值类型变量都含有与老对象相同的值,
但是,新对象所有的对其他对象的引用却是和老对象指向同一个地方,
即对引用类型来说,老对象和新对象指向同一个引用对象。
深复制呢,和浅复制就一点不同,那就是,
新对象所有的对其他对象的引用都是指向了复制过的对象,而不再是和老对象指向同一个对象。
相关文章推荐
- 学习php设计模式 php实现原型模式(prototype)
- 学习php设计模式 php实现原型模式(prototype)
- 设计模式PHP5实现之----原型(Prototype)
- 设计模式-PHP实现单件模式的几种方式
- php使用接口实现工厂设计模式
- 设计模式php实例:原型模式
- [设计模式]head first 设计模式之PHP实现 第一章
- 设计模式C++实现(5)——原型模式、模板方法模式
- 设计模式C++实现(5)——原型模式、模板方法模式
- php设计模式 Prototype (原型模式)
- PHP 设计模式之观察者模式实现
- [设计模式]head first 设计模式之PHP实现 第三章 装饰者模式
- 设计模式---原型(C++代码实现)
- 《模式——工程化实现及扩展》(设计模式C# 版)《原型模式 Prototype》——“自我检验"
- [转]利用 PHP 的 SPL 快速实现 Observer 设计模式
- 设计模式C++实现(5)——原型模式、模板方法模式
- 《模式——工程化实现及扩展》(设计模式C# 版)《原型模式 Prototype》——“自我检验" 参考答案
- 设计模式--原型模式实现C++
- PHP设计模式之观察者模式实现DEMO
- php中使用接口实现工厂设计模式的代码