优缺点分析
- 创建新的对象比较复杂时,可以利用原型模式简化对象的创建过程,同时也能提高效率。
- 不用重新初始化对象,而是动态地获取对象的运行时状态。
- 在实现深克隆时,可能需要比较复杂的代码。
- 需要为每一个类配备一个克隆方法,对类进行改造时,可能需要修改其克隆方法,违背 ocp 原则。
拷贝
-
浅拷贝
-
深拷贝(包括引用类型)
- 重写 clone()
- 序列化
public Object deepClone() { try ( ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(bos); ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray()); ObjectInputStream ois = new ObjectInputStream(bis); ) { oos.writeObject(this); return ois.readObject(); } catch (Exception e) { return null; } }