设计模式——原型模式(2)
JAVA中使用原型模式
接下来让我们来了解一下java中的原型模式,如果要在java中建立原型,只需要实现Cloneable接口,并且要在类中定义clone()方法,这样就可以调用此类的clone()来进行原型复制了,如果没有实现此接口,调用clone方法时,会出现CloneNotSupportedException异常。clone默认是浅复制,如果要实现深复制,就需要在clone中调用被引用对象的clone方法去复制被引用对象,当然被引用对象也要实现复制接口,不然会出现异常。
另外给大家讲一下使用序列化实现深复制的方法,这时引用类和被引用类都要继承Serializable接口,在引用类中增加deepCopy方法就可以实现深复制了。举例如下:
public Object deepCopy() throws Exception { 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(); }