Prototype设计模式解析
浅clone与深clone:
1.如果对一个引用进行拷贝,那么就是浅拷贝。如果对一个引用指向的对象进行拷贝,那么就是深拷贝。
2.浅拷贝会出现什么问题?
浅拷贝的拷贝副本的修改会影响源对象的状态和内容。
最简单的由引用之间赋值引起的浅拷贝所引发的问题
/**
* @Author: 刘浩然
* @Date: 2020/5/8 18:30
*/
class User{
String name;
int age;
public User(){
}
public User(String name,int age){
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class test {
public static void main(String[] args) {
User user1=new User("张三",18);
System.out.println("user1"+user1.toString());
System.out.println("********************");
User user2 =user1;
user2.setName("李四");
user2.setAge(18);
System.out.println("user1"+user1.toString());
System.out.println("user2"+user2.toString());
}
}
运行结果:
原因:
为了解决浅复制带来的问题,
(1)让需要拷贝的对象中的,引用对象,的类,实现Cloneable接口,实现clone()方法
(2)让需要拷贝的对象的构造方法中拷贝
注意:下面红色的小圆圈,第一个红色的小圆圈指向第2个红色的小圆圈
参考博客
笔者只是对这篇博客的解读,方便自己去复习理解,也方便他人进行解惑,无商业用途