1.原型模式也叫克隆模式,分为浅克隆和深克隆。浅克隆只能克隆基本类型和String,其他对象实际上还是指向同一个引用。深克隆是连内部对象都一起克隆,需要注意克隆的深度和循环引用的问题。
2.深度克隆可以用序列化来实现,通过将一个实现了Serializable接口的对象写入流,再从流里读出来,得到的就是一个深度克隆的对象。示例:
public Object deepClone() throws IOException, ClassNotFoundException{
//将对象写到流里
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bos);
oos.writeObject(this);
//从流里读回来
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bis);
return ois.readObject();
}
网友评论