1.定义#
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。在JAVA中通过继承Clonealbe接口,并实现其中的clone方法,即可实现原型的拷贝,需要注意的是clone方法拷贝的是二进制流,所以使用clone生成新的对象时不会调用类的构造方法,并且clone是浅拷贝方法,注意是用深拷贝拷贝非基本类型(基本类型为int,char,string等)。另外被定义为final的属性无法被拷贝。
2.类图#
十分简单,此处不贴图了。
3.实现#
public class Thing implements Cloneable{
private ArrayList<String> arrayList = new ArrayList<String>();
@Override
public Thing clone() {
//通过继承Cloneable接口,实现clone方法
Thing thing = null;
try {
thing = (Thing) super.clone();
//深拷贝问题解决
thing.arrayList = (ArrayList<String>) this.arrayList.clone();
} catch (CloneNotSupportedException e) {
e.printStackTrace();
}
return thing;
}
public void setValue(String value) {
this.arrayList.add(value);
}
public ArrayList<String> getValue() {
return this.arrayList;
}
}