设计模式 -原型模式 (Prototype)
一、基本介绍
- 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象
- 原型模式是一个创建型设计模式,允许一个对象再创建另外一个可定制的对象,不需要知道创建的细节
- 工作原理:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来进行创建,
对象.clone()
二、注意事项
-
浅拷贝
浅拷贝 只对 基本数据类型其真正的拷贝作用,对于引用类型来说的话,只是简单的对引用类型地址进行了拷贝,即使进行了多次的浅拷贝,多个对象中地引用类型还是指的同一个
-
深拷贝
深拷贝用来解决浅拷贝问题
深拷贝实现方式:
-
方式一:重写 clone 方法进行实现深拷贝
super.clone()
-
方式二:通过对象序列化进行深拷贝
推荐使用
public Object deepClone() { ByteArrayOutputStream byteArrayOutputStream = null; ObjectOutputStream objectOutputStream = null; ByteArrayInputStream byteArrayInputStream = null; ObjectInputStream objectInputStream = null; try { byteArrayOutputStream = new ByteArrayOutputStream(); objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); objectOutputStream.writeObject(this); byteArrayInputStream = new ByteArrayInputStream(byteArrayOutputStream.toByteArray()); objectInputStream = new ObjectInputStream(byteArrayInputStream); SpringDemo springDemo = (SpringDemo) objectInputStream.readObject(); return springDemo; } catch (IOException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); }finally { try { byteArrayInputStream.close(); byteArrayInputStream.close(); objectOutputStream.close(); byteArrayInputStream.close(); } catch (IOException e) { e.printStackTrace(); } } return null; }
-