原型模式
来源:互联网 发布:比尔盖茨书单 知乎 编辑:程序博客网 时间:2024/04/19 20:11
简介
原型模式:
用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。
常用的场景
基本就是你需要从A的实例得到一份与A内容相同,但是又互不干扰的实例的话,就需要使用原型模式。
优点
1.使用拷贝模式比直接new一个对象的开销要小的多。
2.可以在程序运行时(对象属性发生了变化),得到一份内容相同的实例,但之间还不会相互干扰。
缺点
涉及的知识点
浅拷贝:就是给对象中的每个成员变量进行复制,就是把A1类中的变量直接赋给A2类中变量,属于值传递,但是涉及到有new之类内存分配的地方,他们却是共享内存的。
深拷贝:就是不仅使用值传递,而是要每个变量都有自己一份独立的内存空间,互不干扰。
默认的拷贝构造函数是浅拷贝的,如果要实现深拷贝,就需要重写拷贝构造函数T(const T&)
测试代码
#include <iostream>#include <assert.h>using namespace std;//原型类class FBookProtoType{public:FBookProtoType(){};~FBookProtoType(){};int name;int price;int num;//深拷贝FBookProtoType* deepClone(){FBookProtoType* pItem = new FBookProtoType();pItem->name = this->name;pItem->price = this->price;pItem->num = this->num;return pItem;}//浅拷贝FBookProtoType* shallowClone(){FBookProtoType* pItem = this;return pItem;}};void main(){FBookProtoType* pData = new FBookProtoType();pData->name = 1;pData->price = 1;pData->num = 1;FBookProtoType* pDeep = pData->deepClone();FBookProtoType* pShadow = pData->shallowClone();free(pData);pData = 0;assert(pDeep != 0);assert(pShadow == 0);system("PAUSE");}
阅读全文
0 0
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型 模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- 原型模式
- Android 如何设置状态栏颜色和标题栏颜色一致
- HttpURLConnection的get和post请求实例
- 游戏美术的的各种风格参考
- adb环境搭建问题error: cannot connect to daemon
- EIS2017-几道简单的WEB题的WP
- 原型模式
- Spket在Eclipse下的安装和配置(图文教程)
- js常用的工具方法总结
- 2017-10-30 & 2017-10-31 集训总结
- okhttp3 源码分析
- rem和em的区别
- Spring中的后置处理器BeanPostProcessor讲解
- iOS打包缩小包体积
- SSM框架搭建