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

Java设计模式(三)原型模式

创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式

用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。
java中object方法clone,需要类实现cloneable接口
这就是原型模式,工作原理是将一个原型对象传给那个要发动创建的对象,这个对象通过请求原型对象拷贝他们自己来实施创建,及 对象.clone()

原型模式在spring中的使用
在这里插入图片描述
原型模式,创建的是属性相同的对象,对象不是同一个对象

深拷贝和浅拷贝
对象中有对象,调用clone方法时候,对象中的对象没有真正被克隆,只是指向原来的引用,这就是浅拷贝

浅拷贝,对于数据类型是基本数据类型的成员变量,直接进行值传递,就是将该属性值复制一份给新的对象。对于数据类型是引用数据类型的成员变量,浅拷贝会进行引用传递,只是将该成员变量的引用值(内存地址)复制一份给新的对象。这种情况,一个对象中修改成员变量会影响到另一个对象的值,clone()方法就是浅拷贝

深拷贝,反之,肯定和浅拷贝不一样,对于数据类型是引用数据类型的成员变量,申请存储空间,并复制每个引用数据类型成员变量所引用的对象,就是要对整个对象进行拷贝,而不是复制原型的内存地址。对象序列化实现深拷贝

动态获得对象运行时的状态,如果原始发生变化,其他可领对象也会发生变化,无需修改代码

缺点,需要每个都有clone方法,对已有泪进行改造需要修改源代码,违背opc原则


http://www.kler.cn/a/7255.html

相关文章:

  • IC 脚本之VIM 记录
  • 【模板】字典树luoguP8306
  • Word_小问题解决_1
  • 【python】用 Scrapy 实现高效爬虫项目
  • 什么是MySQL,有什么特点
  • 深度学习:transpose_qkv()与transpose_output()
  • SpringBoot源码学习系列——自动配置原理(三)
  • SpringBoot:自动配置源码底层原理分析
  • Web漏洞-文件包含漏洞超详细全解(附实例)
  • 章节2 行走数据江湖,只需一行代码
  • windows 解决惠普主机核显无法输入VGA、HDMI信号问题
  • MATLAB结构化程序设计
  • MySQL 存储引擎
  • Java设计模式(九)外观模式
  • mongodb和mysql双写数据一致性问题
  • 如何提高逻辑思维,亲测,这3个方法有效
  • C++封装详解——从原理到实践
  • 实验四 配置OSPF协议
  • 投资大咖说,消费产业3个升级方向
  • java 重试
  • Python怎么学最高效
  • “我做测试开发的这一年多,月薪5K变成了24K”
  • 【前端面试题——微信小程序】
  • VUE3 学习笔记(六)Post 实现文件下载(Delphi 后台)
  • 【软件设计师06】数据结构与算法基础
  • 朴素贝叶斯程序