




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
设计模式的原型模式、Prototype、目录Content、原型模式定义、原型模式使用用原型对象表示要创建的对象的类型并复制该原型对象的方法在原型模式下,您可以为一个对象创建另一个可定制的对象,而无需了解如何创建对象的详细信息。 1 .原型模型的概念和特征,为什么需要原型模型? 要使用绘图工具绘制圆,只需拖动工具栏中的绘制圆的工具到绘图区域,就不需要从头开始一点一点地绘制圆。 另外,需要不同大小和颜色的圆时,复制几个圆,然后修改大小和颜色即可。 这是原型模型的具体应用,用户不需要知道对象是如何创建的,只要复制现有的对象,然后进行修改以获得自己希望的对象,就可以实现。 1 .原型模型的概念和特征,为什么需要原型模型? 引入原型模型的本质是使用现有的原型对象来快速生成与原型对象相同的实例。 a的实例a:Aa=newA (); 这里,我想生成和a相同的实例b。 在原型模式下,Ab=a.Clone (); 不是创造新的a对象。 以上话语获得与a相同的实例,确切地说,其数据成员应该相同。 在原型模式下,不使用new操作返回a对象。 1、原型模型的概念和特征、原型模型与工厂模型的异同、原型模型在系统需要独立于产品的建立、显示和构成时,这与工厂模型十分相似。 实际上,原型模型和工厂模型一样,对顾客隐藏了对象的创建工作,但与工厂模型实例化类来构建新对象不同,原型模型复制现有的对象来创建新对象工厂模型适用于产品种类有限的情况,在产品数量多或需要提供动态产品追加删除等性能时,使用原型模型具有更强的适应性。 原型模型的一般结构,原型模型的一般结构如下:原型模型的一般结构,客户角色:客户调用方,客户使用原型对象复制必要的对象。 抽象原型的角色:定义原型的抽象定义。 这个定义复制了自己的接口. 具体的原型角色:作为原型复制的具体对象,必须实现抽象原型定义的接口。 原型管理器角色:此角色用于创建特定的原型类对象,记录每个创建的对象,并保存创建的对象。 也就是说,创建并保存对象(由管理器完成),然后使用Clone ()方法创建新对象。 原型模型的例子,背景:前几天,我不幸把房子的钥匙弄丢了,结果没能进屋。 幸运的是,乡友那里还有一把,所以第二天,我把她那把钥匙拿走了。 另外,她顺便把柜子钥匙给了我。现在上锁很容易,把钥匙交给他,他直接找合适的钥匙胚子,把我的钥匙夹在锁桌子的一端,把胚子夹在另一端,接通电源,把尺比我的钥匙的齿型跑一次,砂轮就把钥匙复制到胚子上了! 不到一分钟,两把新钥匙就完了! 使用UML序列图直观地说明,使用类图进行说明。 程序代码如下:namespace原型模式. /抽象密钥原型publicabstractcllasskey . privatestaringname; 公共字符串名称. get . return name; =value; 私有化owner; 公共字符串所有者. get . return owner; set.owner=value; 公共密钥(字符串名称,字符串所有者) . =name; this.owner=owner; /密钥副本本身的抽象定义publicabstractKeyClone (); 玄关密钥publicclassatekey : key . publicgatekey (string owner ) : base ( gate key ,owner ) publicoverridekeyclone () . returnne /机柜钥匙publicclasscastbinetkey : key. publiccabinetkey (string owner ) : base ( cabinet key ,owner ) publicoverridekeycl /客户端调用方法public class client . publicstaticvoidmain ( args ) . keyoldgatekey,newGateKey,oldCabinetKey,newCabinetKey oldgatekey=newgatekey(him ); newGateKey=oldGateKey.Clone (); newGateKey.Owner=Me ; oldcabinetkey=newcabinetkey ( me ); newcabinetkey=oldcabinetkey.clone (); newcabinetkey.owner=“him”控制台. writeline (oldgatekey )控制台. writeline (newgatekey )控制台. writeline (oldcabinetkey ) console.writeline (newcabinetkey ) ,原型管理器的应用,publicclasskeletonmanager . private system.collections.hashtable keys=。 公共密钥this string name . set . keys.add (name,value ); get.返回(key ) keys name ; /客户端调用方法public class client . publicstaticvoidmain ( args ) . keymanagerkeymanager=new key manager (); key manager gate =newgatekey ( him ); key manager key2 =newgeneralkey ( key2, Him ); key manager key3 =newgeneralkey ( key3 , Him ); key manager key4 =newgeneralkey ( key4, Him ); key manager key5 =newgeneralkey ( key5, Him ); keynew key=(key ) key manager key 2.clone (); newKey.Name=Office ; newKey.Owner=Me ; ,原型模式的优点,1,运行时的产品添加和删除。 2 .更改值以指定新对象。 3 .改变结构指定新对象。 4 .减少子类的结构。 5 .在类中动态部署应用程序。 原型模型的缺点,Prototype模型的最大缺点,虽然对新类来说并不困难,因为每个类都必须有克隆方法,而且该克隆方法必须全面考虑类的功能原型模式的实现要点,请使用原型管理器. 如果系统中的原型数量不固定,则保留可用的原型注册表。 虽然客户并不管理原型,但原型存储在注册表中并被检索。 客户在克隆原型
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 心态富足申论题目及答案
- 心理岗面试题目及答案
- 校园保安面试题目及答案
- 史记中的历史事件讲解与课文教学
- 人教版四年级上册第一单元1.3《十进制计数法》课时练(含答案)
- 月夜作文800字8篇范文
- 妈妈的爱100字(12篇)
- 纪念白求恩课件开场白
- 秋天的怀念600字9篇
- 我爱森林600字9篇
- 安装电工电气调试员安全技术操作规程
- 2乳的验收与预处理解析
- 三峡大学级本科电气工程及其自动化二本培养方案
- 柴芍六君子汤加减治疗脾胃病三则
- GB/T 778.1-2018饮用冷水水表和热水水表第1部分:计量要求和技术要求
- GB/T 11547-2008塑料耐液体化学试剂性能的测定
- 伤口造口新进展课件
- (完整版)人工智能介绍课件
- 恶性骨肿瘤化疗及注意事项(58张幻灯片)课件
- 国有企业采购规范和示范文本
- Fisher DVC2000定位器培训课件
评论
0/150
提交评论