当前位置: 首页 > news >正文

临沂专业网站制作秦洁婷seo博客

临沂专业网站制作,秦洁婷seo博客,低价建设网站,建设网站什么语言文章目录 概述克隆羊问题传统方式解决克隆羊问题传统的方式的优缺点原型模式原理结构图-uml 类图原理结构图说明 原型模式解决克隆羊问题的应用实例原型模式在Spring框架中的应用深入讨论-浅拷贝和深拷贝浅拷贝的介绍深拷贝基本介绍深拷贝应用实例注意事项 概述 原型模式… 文章目录 概述克隆羊问题传统方式解决克隆羊问题传统的方式的优缺点原型模式原理结构图-uml 类图原理结构图说明 原型模式解决克隆羊问题的应用实例原型模式在Spring框架中的应用深入讨论-浅拷贝和深拷贝浅拷贝的介绍深拷贝基本介绍深拷贝应用实例注意事项 概述 原型模式Prototype Pattern是一种创建型设计模式旨在通过复制现有对象来创建新对象而无需显式地使用构造函数。这种模式允许我们创建一个原型对象然后通过克隆这个原型来生成新的对象实例从而避免了重复创建相似对象的开销。 原型模式的主要思想是通过复制现有对象的状态来创建新对象而不是从头开始重新构建对象。这对于某些对象的创建过程较为复杂或者需要保持一致的初始状态时是一种很有用的模式。 形象的理解孙悟空拔出猴毛 变出其它孙悟空 克隆羊问题 现在有一只羊 tom姓名为: tom, 年龄为1颜色为白色请编写程序创建和 tom 羊 属性完全相同的 10 只羊。 传统方式解决克隆羊问题 bean类 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/Sheep.java 客户端 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/Client.java 传统的方式的优缺点 优点是比较好理解简单易操作。在创建新的对象时总是需要重新获取原始对象的属性如果创建的对象比较复杂时效率较低总是需要重新初始化对象而不是动态地获得对象运行时的状态, 不够灵活改进的思路分析 思路Java 中 Object 类是所有类的根类Object 类提供了一个 clone()方法该方法可以将一个 Java 对象复制一份但是需要实现 clone 的 Java 类必须要实现一个接口 Cloneable该接口表示该类能够复制且具有复制的能力 原型模式 原型模式原理结构图-uml 类图 原理结构图说明 Prototype : 原型类声明一个克隆自己的接口ConcretePrototype: 具体的原型类, 实现一个克隆自己的操作Client: 让一个原型对象克隆自己从而创建一个新的对象(属性一样 原型模式解决克隆羊问题的应用实例 使用原型模式改进传统方式让程序具有更高的效率和扩展性。 bean类 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/improve/Sheep.java 客户端 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/improve/Client.java 原型模式在Spring框架中的应用 Spring 中原型 bean 的创建就是原型模式的应用debug分析 上述四个图均为Spring框架中底层的原型模式细节 深入讨论-浅拷贝和深拷贝 浅拷贝的介绍 对于数据类型是基本数据类型的成员变量浅拷贝会直接进行值传递也就是将该属性值复制一份给新的对象。 对于数据类型是引用数据类型的成员变量比如说成员变量是某个数组、某个类的对象等那么浅拷贝会进行引用传递也就是只是将该成员变量的引用值内存地址复制一份给新的对象。因为实际上两个对象的该成员变量都指向同一个实例。在这种情况下在一个对象中修改该成员变量会影响到另一个对象的该成员变量值 前面我们克隆羊就是浅拷贝 浅拷贝是使用默认的 clone()方法来实现 sheep (Sheep) super.clone(); 深拷贝基本介绍 复制对象的所有基本数据类型的成员变量值为所有引用数据类型的成员变量申请存储空间并复制每个引用数据类型成员变量所引用的对象直到该对象可达的所有对象。也就是说对象进行深拷贝要对整个对象(包括对象的引用类型)进行拷贝深拷贝实现方式 1重写 clone 方法来实现深拷贝深拷贝实现方式 2通过对象序列化实现深拷贝(推荐) 深拷贝应用实例 使用 重写 clone 方法实现深拷贝使用序列化来实现深拷贝代码演示 代码案例1 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/deepclone/DeepCloneableTarget.java 代码案例2 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/deepclone/DeepProtoType.java 客户端 https://gitee.com/luan_hao/design-pattern/blob/master/src/main/java/com/lh/prototype/deepclone/Client.java 原型模式的深拷贝会将对象的所有属性值进行拷贝并将拷贝的值放入新的内存地址中从而创建一个完全独立的新对象原对象和新对象之间不共享任何引用关系。这样做的目的是为了创建一个与原对象相似但完全独立的对象使得对新对象的修改不会影响原对象反之亦然。 深拷贝的实现方式通常涉及递归地遍历对象的属性对每个属性值进行拷贝并确保拷贝的属性值也是深拷贝。这可以确保对象中的所有嵌套属性都得到正确地复制。 注意事项 需要注意的是深拷贝可能会涉及到一些性能和复杂性方面的考虑特别是当对象的结构很复杂包含循环引用或大量数据时。在实际使用中可以选择使用不同的深拷贝实现方法例如递归拷贝、序列化和反序列化或者使用专门的深拷贝库来处理这些情况。 创建新的对象比较复杂时可以利用原型模式简化对象的创建过程同时也能够提高效率不用重新初始化对象而是动态地获得对象运行时的状态如果原始对象发生变化(增加或者减少属性)其它克隆对象的也会发生相应的变化无需修改代码在实现深克隆的时候可能需要比较复杂的代码缺点需要为每一个类配备一个克隆方法这对全新的类来说不是很难但对已有的类进行改造时需要修改 其源代码违背了 ocp 原则这点请大家注意.
http://www.sadfv.cn/news/25675/

相关文章:

  • 国外网站国内备案网页制作价格表
  • 深圳教育平台网站建设中国优秀网页设计
  • 做外快的网站网站后台建设编辑器
  • 建立网站站点的过程中不正确的是商家推广平台有哪些
  • 专业定制网站建设代理凡客陈年现状
  • 广州网站运营十年乐云seo广西壮族自治区住房和建设厅网站
  • 苏州吴江城乡和住房建设局网站同步手机wordpress
  • 横沥做网站的电话郑州建设网站定制
  • 官方网站建设账务处理网站建设的基本知识
  • 哪里有做网站的素材手机网站如何做才能兼容性各种手机
  • jsp做网站用到的软件自治区住房和城乡建设厅官网
  • 网站建设的三个步骤是什么广州网站推广服务商
  • 做电影分享网站违法吗域名注册商网站
  • 抽奖网站怎么做网站建站论坛
  • 网站开发需求分析实例网页和网站区别
  • 西安网站建设招骋商丘做网站的电话
  • 网站建设哪个空间比较好珠海集团网站建设报价
  • 网站实名认证 备案医疗网站如何做优化
  • 织梦网站栏目是做什么用的有哪些网站是免费学做网页的
  • 58网站建设 网站制作阿里做外贸的网站
  • 新手做站必看 手把手教你做网站专门做视频的网站吗
  • 域名备案和网站备案区别余姚物流做网站
  • iis网站右键没有属性免费个人网站源码下载
  • 网站seo设计方案案例无锡百度网站推广渠道
  • 网站模块图网站 宗旨
  • 山东专业网站解决方案制作建设厅五大员证书查询网站
  • 奢侈品网站 方案西安定制网站建设
  • 安徽建设通网站门户网站建站要求
  • 北京市门头沟有没有做网站的网店美工招聘信息
  • 怎么做网站关键词视频设计logo网站免费下载