C++设计模式第三讲解读.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C设计模式第三讲解读

第七节: 原型模式中浅拷贝和深拷贝 * 第八节: 实现原型模式中深拷贝 * 前面的实例代码中Resum2用于一个WortExperience指针,而WorkExperience并不是继承自ICloneable接口,现在我 要实现深度拷贝,则定义一个WorkExperience2类,让其继承自IConeable接口,并实现深度拷贝的Clone方法 第八节: 实现原型模式中深拷贝 * 然后修改Resume2类中的m_workExperience指针的类型为WorkExperience2。 最后我们修改Resume2的拷贝构造函数: 不需要修改Resume2的Clone方法: 第八节: 实现原型模式中深拷贝 * 测试代码不用更改,我们运行看一下结果: 第九节: 防止深度拷贝后的内存泄露 * 对于前面所述的内存泄露,最简单的方式是: 在Resume2中添加一个方法: 然后在需要内存释放的时候手动的进行delete: 第九节: 防止深度拷贝后的内存泄露 * 然后在需要内存释放的时候手动的进行delete: 《C++设计模式教程》 第三讲:Builder和Prototype模式 主讲人:步磊峰 UIPower 3D界面引擎负责人 第一节: Builder模式定义 * 定义: 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。 这样的设计模式被称为建造者模式。 那么如何理解这句话的含义呢? 我们仍旧使用汽车制造的例子来进行相关的演示。 第二节: Builder模式例子 * 1、汽车的是一个复杂的产品,一个汽车公司组装一辆汽车,需要一定的步骤,例如需要组装引擎,底盘以及轮子 等。 2、专业的事情由专业的公司,例如引擎可以由专业的生产商,例如劳斯莱斯,通用汽车等生产。 同样的轮胎可以由普利司通或米其林等专业公司进行生产。汽车厂商很多时候是将专业公司生产的部件组合起 来,从而组装成成车。 这意味着不同的汽车生产商使用相同的部件。 那么我们来定义Car的数据结构,代表着一个复杂的产品。 第二节: Builder模式例子 * 第二节: Builder模式例子 * 第二节: Builder模式例子 * 3、将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。 前面定义了一个复杂对象Car。根据定义,Car的构造与它的表示分离。意味着,Car我们仅仅定义了它的表示, 是由生产厂商信息以及引擎,底盘和轮子组成,但是如何构造它并不是在Car的构造器中进行构造,而是使用引 进一个构造器来来进行复杂对象Car的构造。 根据定义,使用同样的构造过程可以创建不同的表示。 这句话的意思意味着构造器构造复杂对象Car是具有一定的流程的,而且在Builder的过程中,可以创建出不同汽 车厂商生产的汽车,同一生产商的汽车使用各个专业公司生产的引擎或轮胎等等。或者不同的汽车生产厂商生产 出来的汽车使用同一专业公司的引擎或轮胎等等。 这些都意味着创建不同的表示(Car的不同表示)。 第二节: Builder模式例子 * 4、由此可见,Builder模式的核心是: 复杂产品的表示与创建分离。 强调创建的过程或流程是有步骤的,甚至可以强制要求有先后顺序。 产品的不同表现形式不是通过产品继承扩展而来的,而是通过继承扩展创建器而来的。 第二节: Builder模式例子 *

文档评论(0)

22ffbqq + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档