原型模式(浅复制和深复制)
来源:互联网 发布:淘宝店铺如何冲上销量 编辑:程序博客网 时间:2024/05/30 23:39
原型模式即用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。
Prototype原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
结构图如下:
对于原型模式,又可分为浅复制和深复制。
(1)浅复制:被赋值对象的变量都含有与原来变量相同的值,而所有的对其他对象的引用都仍然指向原来的对象
(2)深复制:把引用对象的变量指向复制过来的新对象,而不是原有的被引用的对象
下面是编写的一段深复制的代码:
#include <iostream>#include <string>using namespace std ;class WorkExperience //工作经历类{string m_strTimeArea ; //工作时区string m_strCompany ; //工作地点public:void Setwork(string strTimeArea ,string strCompany) //函数赋值{this->m_strTimeArea = strTimeArea ;this->m_strCompany = strCompany ;}string GetTimeArea(){return m_strTimeArea ;}string GetCompany(){return m_strCompany ;}};class Resume //简历类{string m_strname ; //名字string m_strsex ; //性别string m_strage ; //年龄WorkExperience * work ;public:Resume(){} ;Resume(string strname):m_strname(strname){} ; //构造函数传入姓名void Setinformation(string strsex,string strage) //设置性别年龄{this->m_strsex = strsex ;this->m_strage = strage ;work = new WorkExperience ;}void SetExperience(string strTimeArea ,string strCompany ) //设置工作经历{work->Setwork(strTimeArea,strCompany) ;}void Display() //打印简历{cout<<m_strname<<" "<<m_strsex<<" "<<m_strage<<endl ;cout<<"工作经历:"<<work->GetTimeArea()<<" "<<work->GetCompany()<<endl ;}Resume * Clone() //克隆简历{Resume * temper = new Resume ;*temper = *this ; //将this的所有值拷贝到temper(深复制),若要达到浅复制的效果,可在主函数中不修改信息,直接打印return temper ;}};int main(){Resume * pStudent1 = new Resume ("小欣") ;pStudent1->Setinformation("女","22") ;pStudent1->SetExperience("2017.10.1","360") ;pStudent1->Display();Resume * pStudent2 = pStudent1->Clone() ;pStudent2->Setinformation("女","23") ;pStudent2->SetExperience("2017.10.2","百度") ;pStudent2->Display();Resume * pStudent3 = pStudent1->Clone() ;pStudent3->Setinformation("女","24") ;pStudent3->SetExperience("2017.10.3","阿里巴巴") ;pStudent3->Display();return 0 ;}
运行结果为:
阅读全文
0 0
- 原型模式浅复制和深复制
- 原型模式(浅复制和深复制)
- 原型模式——浅复制和深复制
- 如何理解原型模式中的深复制和浅复制
- 原型模式之深复制和浅复制
- java设计模式-原型模式(浅复制,深复制)
- 原型模式深复制浅复制
- 原型模式、对象克隆(深复制、浅复制)
- 原型模式--自我复制(结合Java浅复制与深复制)
- 设计模式学习--原型模式(深复制与浅复制)
- 原型模式——浅复制VS深复制
- 再会原型模式——深复制VS浅复制
- 设计模式之原型学习 java中的浅复制和深复制
- Java 深复制(深克隆)&浅复制(浅克隆)&原型模式(ProtoType)
- 原型模式深浅复制
- 设计模式(六):原型模式——浅复制
- 设计模式(六):原型模式——深复制
- GOF 23 设计模式之 原型模式(prototype) 深复制与浅复制举例
- Java内存模型分析
- Java容器LinkedList源代码解析
- Dialog Style属性设置
- Linux 网络
- 使用archetype插件创建符合maven规定的目录骨架
- 原型模式(浅复制和深复制)
- angularJs弹性盒模型+bootstrap开发案例
- 通过git clone安装caffe
- codeforces——723A—— The New Year: Meeting Friends
- Python中捕获异常信息
- Android的EditText设置可编辑与不可编辑怎样切换
- Kotlin -- 对象表达式和对象声明
- Java集合类详解
- uvc设备通过v4l2驱动( QT项目)