原型模式也就是克隆模式,当一个对象比较大,new对象比较耗时间,那么就可以采用原型模式来进行复制,复制分深复制和浅复制,深复制就是连引用对象也一起复制,而浅复制只复制引用对象的引用地址,不复制对象本体,要实现浅复制,只需要实现目标对象实现Cloneable接口,实现clone()方法,直接return super.clone();就可以实现复制,JDK调用的是native虚拟机中的C代码实现的复制,而深复制就需要实现Serializable接口来进行序列化操作,通过序列化成二进制来创建新对象,代码如下:
Sheep sheep1 = new Sheep("a"); ByteArrayOutputStream bos=new ByteArrayOutputStream(); ObjectOutputStream oos=new ObjectOutputStream(bos);//先反序列化对象到字节数组流中 oos.writeObject(sheep1); byte[] outArray = bos.toByteArray(); ByteArrayInputStream bis=new ByteArrayInputStream(outArray); ObjectInputStream ois=new ObjectInputStream(bis); //从字节数组流中读取到对象 Sheep sheep2=(Sheep) ois.readObject(); //拷贝了一份新对象