第6章原型模式资料.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第6章原型模式资料

你参见prototype就会发现人家有更高明的解决方案,所有函数只创建一次,而每个对象都具有自己的对象属性实例 * Struts是用来做应用层的 spring充当了管理容器的角色。我们都知道Hibernate用来做持久层 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现 * Struts是用来做应用层的 spring充当了管理容器的角色。我们都知道Hibernate用来做持久层 组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现 * 在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过clone的方法创建一个对象,然后由工厂方法提供给调用者 如果系统不需要动态的改变原型对象,抽象工厂模式可以替代原始原型模式。 如果原型对象只有一种,而且不会赠加的话,工厂方法模式可以替代原始模型模式 public?class?Cell?implements?Cloneable?{?? ????//细胞壁?? ????private?String?cellWall;?? ????//细胞膜?? ????private?String?cellMembrane;?? ????//细胞组织?? ????private?String?cellularTissue;?? ?? ????...//这里省略掉了对成员变量的setter/getter方法的定义?? ?? ????//细胞的自身复制?? ????//这里重载了Obect#clone()方法,为了方便外部调用,把返回值由Object修改为Cell,并把访问 级别设置为public?? strong????public?Cell?clone()?{?? ????????try?{?? ????????????//只需简单地调用 super.clone();即可?? ????????????return?(Cell)super.clone();?? ????????}?catch?(CloneNotSupportedException?e)?{?? ????????????throw?(new?InternalError(e.getMessage()));?? ????????}?? ????}?? /strong?? }?? ?? //调用方:?? public?class?Client?{?? ????public?static?void?main(String[]?args)?{?? ????????//准备原型细胞?? ????????Cell?cell?=?new?Cell();?? ????????cell.setCellWall(cell?wall?1);?? ????????...?? ????????//克隆原型细胞?? ????????Cell?clonedCell?=?cell.clone();?? ????????...?? ????????//操作被克隆的细胞(略)?? ????}?? }?? Java语言提供了对象复制的机制,Prototype模式的Java实现一般也通过实现Cloneable接口来实现。 这里我们也通过实现Cloneable接口来说明Prototype模式。 * 在创建对象的时候,不只是希望被创建的对象继承其基类的基本结构,还希望继承原型对象的数据。 希望对目标对象的修改不影响既有的原型对象(深度克隆的时候可以完全互不影响)。 隐藏克隆操作的细节。很多时候,对对象本身的克隆需要涉及到类本身的数据细节 * 在创建对象的时候,不只是希望被创建的对象继承其基类的基本结构,还希望继承原型对象的数据。 希望对目标对象的修改不影响既有的原型对象(深度克隆的时候可以完全互不影响)。 隐藏克隆操作的细节。很多时候,对对象本身的克隆需要涉及到类本身的数据细节 * 如多个学生对象的信息的区别在于性别、姓名和年龄,而专业、学院、学校等信息都相同,为了简化创建过程,可以通过原型模式来实现相似对象的复制。 * * 使用序列化实现java 对象的深拷贝 clone是Object类的方法,如果对象中的所有属性都属于数值或者基本类型,这样拷贝没有问题的,但是,如果对象中包含子对象的引用,那么拷贝的结果就是两个对象引用同一个子对象。 但是可以通过序列化的方式来实现对象的深拷贝 ? public Serializable deepCopy() throws IOException, ClassNotFoundException{ ??ByteArrayOutputStream baos = new ByteArrayOutputStream(); ??Objec

文档评论(0)

过各自的生活 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档