0-前言
所谓原型模式,简单点说就是复制副本;
而复制,有浅复制和深复制之分,
浅复制:只能复制第一层基本类型的值,对于第二层引用类型的值不能复制;
深复制:复制所有层次,是完整对象的完整复制;
浅复制一般通过实现Cloneable接口来实现,但是这种方法,实际上没啥用,实际项目中是基本不用这种方法的;
实际项目中一般都采用深复制的方式,主要是通过序列化的方式来实现对象的整个完整复制;
1-深复制实现
下面通过序列化的方式来实现对象深复制
1、编写深复制工具类
/** * @description: 通过序列化实现对象的深拷贝 * @author: anson * @Date: 2020/7/31 13:59 */public class CloneUtils{ @SuppressWarnings("unchecked") public static <T extends Serializable> T clone(T obj){ T cloneObj = null; try { //写入字节流 ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream obs = new ObjectOutputStream(out); obs.writeObject(obj); obs.close(); //分配内存,写入原始对象,生成新对象 ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray()); ObjectInputStream ois = new ObjectInputStream(ios); //返回生成的新对象 cloneObj = (T) ois.readObject(); ois.close(); } catch (Exception e) { e.printStackTrace(); } return cloneObj; }}
客户端:
User cloneuser = CloneUtils.clone(user2);
无论POJO对象有几层有多少引用对象,都能完整的复制副本;
无废话设计模式(4)原型模式inkfrog、 7.15跨境出口电商卖家几大忧愁分享会、 弯道超车-亚马逊私密数据分析包 窥探竞争对手数据、 黑龙江全力建设、运营对俄跨境电商物流通道、 怎样更好地理解产品,才做得好跨境电商?、 危险化学品伪报导致集装箱船发生大火?人财两失得不偿失!、 2017深圳国庆节有什么好去处?、 2017年五一广东景区打八折是真的吗?、 2017年中秋节去西冲三门岛好不好?西冲三门岛怎么样?、
No comments:
Post a Comment