- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
T19-原型模式(周丹)
设计模式之
原型模式
摘要
1、原型模式的特点和使用场景
2、浅复制和深复制的原理。
3、原型模式的实现方案。
4、总结原型模式。
1、原型模式的特点及使用场景
原型模式的主要思想是基于现有的对象克隆一
个新的对象出来,一般是有对象的内部提供克隆的
方法,通过该方法返回一个对象的副本,这种创建
对象的方式,相比我们之前说的几类创建型模式还
是有区别的,之前的讲述的工厂模式与抽象工厂都
是通过工厂封装具体的new操作的过程,返回一个新
的对象,有的时候我们通过这样的创建工厂创建对
象不值得,特别是以下的几个场景的时候,可能使
用原型模式更简单也效率更高。
1、原型模式的特点及使用场景
场景1:
如果说我们的对象类型不是刚开始就能确定,
而是这个类型是在运行期确定的话,那么我们通过
这个类型的对象克隆出一个新的类型更容易。
例如我们有的时候在处理DataTable中的记录进
行筛选后,放在一个新的DataTable 中,我们知道
如果说2个dataTable的架构不同,那么必须手动的
显示的赋值,否则无法使用如下方式进行导入数据。
下面给出测试的相关代码和说明:
DataTableDemo.TXT
1、原型模式的特点及使用场景
场景2:
有的时候我们可能在实际的项目中需要一个对象在某个状态下的副
本,这个前提很重要,这点怎么理解呢,例如有的时候我们需要对比一个
对象经过处理后的状态和处理前的状态是否发生过改变,可能我们就需要
在执行某段处理之前,克隆这个对象此时状态的副本,然后等执行后的状
态进行相应的对比,这样的应用在项目中也是经常会出现的。
假设我们有这样的需求,我们在ORM(对象/关系数据库映射)框架的
设计中,经常会遇到这样的问题,我们在处理某个对象的编辑状态的时候,
我们想框架给我们生成的更新数据库的SQL语句,不包含数据列没有发生
变化的列,不要出现在更新语句中,这个时候,可能一个方案会是,编辑
前克隆一个对象,然后等编辑后提交的时候,生成相应的语句时进行对比
之前克隆的对象,看看是否数据发生变化,如果说对象的部分数据列发生
变化,那么就只是把变化的数据列进行更新。
当然上面我只是给出了一种比较简单的,但是效率不是很高的实现
方案,还有很多好的方案我就不讨论了,这里只是为了说明原型模式的可
用场景。
如果对上面的方式不是很理解或者看文字比较累的话,可以看下面
的图,应该就比较清晰了。
1、原型模式的特点及使用场景
场景3:
当我们在处理一些对象比较简单,并且对象之间的
区别很小,可能只是很固定的几个属性不同的时候,可能
我们使用原型模式更合适,例如我们的生活中的颜色的克
隆:我们都可以通过红色来克隆其他的所有颜色,只是修
改相应的个别属性即可,远比创建一个新的对象,然后给
对象的各个属性赋值来的简单和方便,当然有的时候,如
果我们并不需要基于现有的对象复制新的对象,或者我们
需要的就是一个干净的空对象,那么我的首先还是工厂模
式或者抽象工厂模式啦。
2、浅复制和深复制的原理
这里说道的浅复制和深复制对应的就是C++的浅拷贝和深拷
贝构造函数。
深拷贝和浅拷贝可以简单理解为:如果一个类拥有资源,当
这个类的对象发生复制过程的时候,资源重新分配,这个过程就是
深拷贝,反之,没有重新分配资源,就是浅拷贝。下面举个深拷贝
的例子。
如果在类中没有显式地声明一个拷贝构造函数,那么,编译
器将会自动生成一个默认的拷贝构造函数,该构造函数完成对象之
间的位拷贝。位拷贝又称浅拷贝,后面将进行说明。
自定义拷贝构造函数是一种良好的编程风格,它可以阻止编
译器形成默认的拷贝构造函数,提高源码效率。
3、原型模式的实现方案
工程结构:
(1)原型抽象类
Prototype.h
(2 )具体原型类
ConcretePrototypeA (在P
您可能关注的文档
- PSD文件转TIF或JPG细节步骤.docx
- 我国经济增长与居民消费的面板协整检验.pdf
- 我国货币乘数稳定性的实证分析.pdf
- PROE修补曲面.pdf
- 我国货币乘数稳定性实证研究水.pdf
- PS形状工具与形状图层1.pdf
- 战斗力排名第一的比特犬,连人类看到了都要让几分!三张图告诉你.pdf
- PSpice_仿真.doc
- profinet标准型模块.pdf
- PVA纤维增强混凝土的弯曲韧性_邓宗才.pdf
- 小学科学:ESP8266智能插座电路原理与动手实践研究教学研究课题报告.docx
- 《金融开放浪潮下我国多层次监管体系构建与创新研究》教学研究课题报告.docx
- 区域教育质量监测中人工智能应用的数据质量分析与优化策略教学研究课题报告.docx
- 《金融科技监管中的数据治理与合规性要求》教学研究课题报告.docx
- 《3D打印技术在航空航天领域中的多材料制造与复合材料应用》教学研究课题报告.docx
- 《绿色金融发展中的政府职能与市场机制研究》教学研究课题报告.docx
- 《植物工厂多层立体栽培光环境调控技术对植物生长发育节律的调控机制探讨》教学研究课题报告.docx
- 销售团队年度业绩总结.docx
- 银行风险管理与金融危机防范.docx
- 银行网络攻击预警与快速响应机制.docx
最近下载
- 附件14:项目《标价分离书》.xls VIP
- 喷塑规章制度管理.doc VIP
- 2025年高考真题——物理(甘肃卷)含答案.docx VIP
- DBJD25-60-2018 甘肃省建设工程施工机械台班费用定额(含税).docx
- 考研真题 中山大学化学学院化学(B)历年考研真题汇编.docx VIP
- 2025年甘肃高考化学真题试卷含答案.docx VIP
- Colorful七彩虹 主板Intel H610H610M-D EVO V21 说明书(系统 win10 win11)用户手册.pdf
- 新九年级暑假衔接讲义 20 作文(二)描写出彩(学生版+教师版)2025八升九语文统编版.docx VIP
- 2024年甘肃高考政治试卷(真题+答案).pdf VIP
- 模板7:CSCEC8B-CM- M10303《项目商务资料档案清单》.xls VIP
文档评论(0)