当前位置: 首页 > 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.huolong8.cn/news/25675/

相关文章:

  • 财政局门户网站建设方案房产网站源码wordpress
  • 3 阐述网站建设的步骤过程微商怎么找客源人脉
  • 用自家宽带做网站服务器汕头第一网告别单身
  • 网站建设模板代码下载代写
  • 如何建设一个新的网站在线logo制作
  • 贵州公司网站建设深圳网页设计培训班价格
  • 哪里有做图片的网站3合1网站建设价格
  • 东莞个人网站推广建设江西做网站优化好的
  • 青岛建设银行股份有限公司网站首页找营销推广团队
  • wordpress 网站播放器插件学会网站建设总结
  • 厦门做企业网站多少钱制作网站软件排行榜
  • 广州做网站制作网站关键词在哪设置
  • iis6 网站无法访问广东网站优化
  • 网站的建设模式是指什么wordpress是什么系统
  • 网站建设实训结论与分析总结iis 网站绑定域名
  • 手机 网站服务器电子工程职业学院
  • 男和女做暖暖网站网页设计动态页面
  • 可做宣传的网站都有哪些中山网站建设电话
  • 南阳网站建设xihewh做外汇有哪些正规的网站
  • 广告传媒公司网站怎么做宣传片制作公司长沙
  • asp网站怎么验证到百度站长网站设计小结
  • 龙海市住房和城乡建设局网站网络推广
  • 宁波网站建设地方高校网站建设目的
  • 健身器械网站建设案例网站的内容有哪些内容
  • 儿童教育网站怎么做有趣营销网站建设软件下载
  • 宝应县住房建设局网站深圳罗湖企业网站优化
  • 网站产品图片尺寸如何做一个网站设计
  • 购买域名后用wordpress建站邢台市刚刚发生的事
  • 网站产品展示程序员常用的工具有哪些
  • thinkphp微网站开发wordpress4.9.6 主题安装