- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
本章目标 理解原型模式 学会运用原型模式 从“求职信”说起 又到了一年一度的求职高峰期,小菜呢,谨记老师说过的话:不能像发传单那样发简历,所以呢,小菜就这样做了…… 求职结果 忙了一天,回到宿舍,其他同学都接到N(N10)个面试电话,小菜才投出去5份简历…… 于是找到高年级的大鸟,取求职经验。 大鸟说:我们今天就说一种,使用原型模式来解决这个问题,使用对象的拷贝功能来解决这个问题。 原型模式 意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 代码分析-原型类 代码分析-具体原型类 代码分析-客户端代码 分析“求职信”第二版 代码分析 浅复制与深复制 浅复制:只复制引用,不复制引用的对象 深复制:完全复制一个独立的新对象 实现要点 1.使用原型管理器,体现在一个系统中原型数目不固定时,可以动态的创建和销毁。 2.实现克隆操作,在.NET中可以使用Object类的MemberwiseClone()方法来实现对象的浅表拷贝或通过序列化的方式来实现深拷贝。 3.Prototype模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些“易变类”拥有稳定的接口。 效果 1.它对客户隐藏了具体的产品类,因此减少了客户知道的名字的数目。 2.Prototype模式允许客户只通过注册原型实例就可以将一个具体产品类并入到系统中,客户可以在运行时刻建立和删除原型。 3.减少了子类构造,Prototype模式是克隆一个原型而不是请求工厂方法创建一个,所以它不需要一个与具体产品类平行的Creater类层次。 4.Portotype模式具有给一个应用软件动态加载新功能的能力。由于Prototype的独立性较高,可以很容易动态加载新功能而不影响老系统。 5.产品类不需要非得有任何事先确定的等级结构,因为Prototype模式适用于任何的等级结构 6.Prototype模式的最主要缺点就是每一个类必须配备一个克隆方法。而且这个克隆方法需要对类的功能进行通盘考虑,这对全新的类来说不是很难,但对已有的类进行改造时,不一定是件容易的事。 适用性 在下列情况下,应当使用Prototype模式: 1.当一个系统应该独立于它的产品创建,构成和表示时; 2.当要实例化的类是在运行时刻指定时,例如,通过动态装载; 3.为了避免创建一个与产品类层次平行的工厂类层次时; 4.当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 总结 Prototype模式同工厂模式,同样对客户隐藏了对象的创建工作,但是,与通过对一个类进行实例化来构造新对象不同的是,原型模式是通过拷贝一个现有对象生成新对象的,达到了“隔离类对象的使用者和具体类型(易变类)之间的耦合关系”的目的。 本课程版权归北风网所有 欢迎访问我们的官方网站 * 北风网项目培训 讲师:石曼迪 设计模式——原型模式 Resume a = new Resume(“小菜); a.SetPersonalInfo(男, 29); a.SetWorkExperience(1998-2000, XX公司); Resume b = new Resume(“小菜); b.SetPersonalInfo(男, 29); b.SetWorkExperience(1998-2000, XX公司); Resume c = new Resume(“小菜); c.SetPersonalInfo(男, 29); c.SetWorkExperience(1998-2000, XX公司); 让一个原型克隆自身从而创建一个新的对象 具体原型类,实现一个克隆自身的操作 其实就是从一个对象再创建另一个可定制的对象, 而且不需要知道任何创建的细节 abstract class Prototype { private string id; // 构造函数 public Prototype(string id) { this.id = id; } // 属性 public string Id { get { return id; } } public abstract Prototype Clone(); } 关键在这个克隆方法 class ConcretePrototype1 : Prototype { // 构造函数 public Concret
您可能关注的文档
最近下载
- 生命起源及进化的奇妙历程.pptx VIP
- (最新)25年秋部编三年级语文上册19 香港,璀璨的明珠【精品课件】.pptx
- 江苏省掼蛋竞赛规则(2023).docx VIP
- 荧光成像技术在微创手术中的应用.pptx VIP
- 碳纤维加固施工方案.doc VIP
- 【完整版】中压燃气管道工程施工组织设计.doc VIP
- 电力a350技术培训手册维护课程t1t2 rrtrentxwb.pdf VIP
- DB31_T 1183-2019 特种设备隐患排查治理实施指南.pdf VIP
- 入团志愿书电子版其它工作范文实用文档-入团志愿书电子版.pdf VIP
- 第4课 洋务运动和边疆危机(精美课件)-【活学历史】2023-2024学年八年级历史上册同步课件(部编版).pptx VIP
原创力文档


文档评论(0)