设计模式day4- 原型模式
原型模式
对象的拷贝
-
实现Cloneable接口,重写Object类clone方法
-
深拷贝、浅拷贝
-
浅拷贝:使用默认的clone()方法来实现
-
深拷贝:1.重写clone;2.通过对象序列化
-
//深拷贝— 方式1使用clone 方法 @Override protected Object clone() throws CloneNotSupportedException { Object deep = null; //这里完成对基本数据类型( 属性) 和String的克隆 deep = super.clone(); //对引用类型的属性, 进行单独处理 DeepProtoType deepProtoType = (DeepProtoType) deep; deepPrototype.deepCloneableTarget = (DeepCloneableTarget)deepCloneableTarget.clone(); //TODO Auto-generated method stub return deepProtoType; }
-
//深拷贝—方式2通过对象的序列化实现(推荐) public Object deepClone() throws Exception { //创建流对象 ByteArrayOutputStream bos = null; ObjectoutputStream oos = null; ByteArrayInputStream bis = null; ObjectInputStream ois = null; //序列化 bos = new ByteArrayoutputStream(); oos = new ObjectoutputStream(bos); oos.writeObject(this); //当前这个对象以对象流的方式输出 //反序列化 bis = new ByteArrayInputStream(bos.toByteArray()); ois = new ObjectInputStream(bis); DeepProtoType copyobj = (DeepProtoType) ois.readobject(); return copyobj; }
spirng中原型模式
- bean创建,可使用原型模式创建
以此纪念陪伴我十年的狗狗