原型模式:根据一个对象,复制出一个新的对象,新的对象具有原对象的特点。原型模式获取对象的效率高,避免重新执行构造过程的步骤。JDK中的clone就是一个典型的原型模式。
一、浅复制
JDK中的clone方法就属于浅复制,此方法可以获取一个不同的复制对象,不过如果对象中有引用对象,那么clone方法只会将对象的引用复制过来。
二、深复制
-
使用反射实现
-
使用序列化发序列化实现
private Object copy() throws IOException, ClassNotFoundException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(this);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
return objectInputStream.readObject();
}