提示:当需要创建一个和已有对象属性相同的对象时候
目录
前言
提示:传统的方式直接new对象,将目标对象的属性直接set新对象中或者构造方法直接传入。
1)好理解,简单易操作;
2)创建新对象,总是需要获取原始对象的属性,如果创建对象属性比较多,效率较低;
3)总是创建新对象、而不是动态获得对象运行时的状态、不够灵活
改进思路:Java中Object是所有类的父类,Object里面有个clone()方法,该方法可以将java对象复制一份。该类必须实现Cloneable接口。------原型模式
一、原型模式-基本介绍
- 原型模式是指:用原型实例指定创建对象的种类,并且可以通过拷贝这些原型,创建新的对象;
- 原型模式是一种创建型模式,允许一个对象再创建另外一个可定制的对象,无需知道如何创建的细节
- 工作原理:通过一个原型对象传给那个要发送创建的对象,这个要发动创建的对象通过请求原型对象拷贝他们自己来实施创建即对象.clone()
示例:spring创建对象时候可以指定scope=prototype。
二、深拷贝和浅拷贝
1.浅拷贝的介绍
基本数据类型直接进行值传递,复制一份给新对象;
引用数据类型是引用传递,新旧对象的属性都指向同一个引用,一个对象属性修改会影响到另外一个对象的引用属性;
实现方式:实现cloneable接口调用super.clone方法
2.深拷贝介绍
复制对象所有基本数据类型的成员变量值
为所有引用数据类型的成员属性申请存储空间,并复制每个引用数据类型成员变量所引用的对象,直到该对象可达的所有对象。(深拷贝是对引用对象的的整个对象进行拷贝)
实现方式:重写clone方法、对象序列化
总结
提示:未完待续