PHP设计模式之原型模式详解
2016-11-19 00:00
549 查看
概念理解:原型模式是先创建好一个原型对象,然后通过clone原型对象来创建新的对象。适用于大对象的创建,因为创建一个大对象需要很大的开销,如果每次new就会消耗很大,原型模式仅需内存拷贝即可 。
浅拷贝:被拷贝对象的所有变量都含有与原对象相同的值,而且对其他对象的引用仍然是指向原来的对象,即浅拷贝只负责当前对象实例,对引用的对象不做拷贝。
深拷贝:被拷贝对象的所有的变量都含有与原来对象相同的值,除了那些引用其他对象的变量,那些引用其他对象的变量将指向一个被拷贝的新对象,而不再是原来那些被引用的对象。即深拷贝把要拷贝的对象所引用的对象也拷贝了一次。而这种对被引用到的对象拷贝叫做间接拷贝。
在决定以深拷贝的方式拷贝一个对象的时候,必须决定对间接拷贝的对象时采取浅拷贝还是深拷贝还是继续采用深拷贝。
序列化深拷贝:利用序列化来做深拷贝,把对象写到流里的过程是序列化的过程,这一过程称为“冷冻”或“腌咸菜”,反序列化对象的过程叫做“解冻”或“回鲜”。
实战:
浅拷贝:被拷贝对象的所有变量都含有与原对象相同的值,而且对其他对象的引用仍然是指向原来的对象,即浅拷贝只负责当前对象实例,对引用的对象不做拷贝。
深拷贝:被拷贝对象的所有的变量都含有与原来对象相同的值,除了那些引用其他对象的变量,那些引用其他对象的变量将指向一个被拷贝的新对象,而不再是原来那些被引用的对象。即深拷贝把要拷贝的对象所引用的对象也拷贝了一次。而这种对被引用到的对象拷贝叫做间接拷贝。
在决定以深拷贝的方式拷贝一个对象的时候,必须决定对间接拷贝的对象时采取浅拷贝还是深拷贝还是继续采用深拷贝。
序列化深拷贝:利用序列化来做深拷贝,把对象写到流里的过程是序列化的过程,这一过程称为“冷冻”或“腌咸菜”,反序列化对象的过程叫做“解冻”或“回鲜”。
实战:
$canvas1 = clone $prototype; $canvas1->rect(3,6,4,12); $canvas1->draw(); echo "========================="; $canvas2 = clone $prototype; $canvas2->rect(1,3,2,6); $canvas2->draw();
相关文章推荐
- PHP设计模式之原型模式定义与用法详解
- PHP设计模式初探-详解单例模式
- php设计模式之命令模式的应用详解
- php实现设计模式中的单例模式详解
- php 常用设计模式详解
- php设计模式之——原型模式
- 设计模式php实例:原型模式
- PHP设计模式:创建型之原型模式(Prototype)
- PHP实现设计模式中的抽象工厂模式详解
- 设计模式详解之原型模式
- PHP设计模式——原型模式
- 设计模式详解之原型模式
- php设计模式之观察者模式的应用详解
- php实现设计模式之 原型模式
- php设计模式 Prototype (原型模式)代码
- php设计模式之观察者模式的应用详解
- PHP设计模式13-原型模式
- php设计模式实例详解(综合)
- 深入理解JavaScript系列(42):设计模式之原型模式详解
- 10. 星际争霸之php设计模式--原型模式