这模式是干啥的?
就是复制一个已经存在的对象,于是这就分为浅复制和深复制。
浅复制和深复制有啥区别?
浅复制无需再开辟内存空间,因为它只不过是不同的指针指向了相同的内存空间而已。深复制则需要另开辟内存空间,因为它是指针指向了不同的内存空间。
浅复制和深复制哪里相同?
它们都需要不同的指针。
类图
效果
真绵羊
克隆绵羊0
克隆绵羊1
Process finished with exit code 0
调用
package com.company;
public class Main {
public static void main(String[] args) {
// write your code here
Sheep oneSheep = new Sheep();
oneSheep.getName();
Sheep anotherSheep = oneSheep.customCloneMethod();
anotherSheep.getName();
Sheep oneMoreSheep = oneSheep.customCloneMethod();
oneMoreSheep.getName();
}
}
克隆的接口
package com.company;
public interface CommonCloneInterface {
CommonCloneInterface customCloneMethod();
}
被克隆的类型
package com.company;
public class Sheep implements CommonCloneInterface {
private String name;
static int cloneCounter = 0;
public String getName() {
if (this.name == null)System.out.println("真绵羊");
else System.out.println(name);
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public Sheep customCloneMethod() {
Sheep cloneObject = new Sheep();
cloneObject.setName("克隆绵羊" + cloneCounter++);
return cloneObject;
}
}
多谢捧场
如果您觉得我的文章有价值,那么赏脸打赏一个,鄙人感激不尽。不过,不打赏看看也是好的,如果有不对的地方,还请您多多指正。
网友评论