设计模式 — 原型模式 图解java对象克隆 引用拷贝、浅拷贝、深拷贝、序列化拷贝

【摘要】 什么是原型模式
原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。关键就是两个字:克隆
 
对象克隆简介
对象克隆…

什么是原型模式

原型模式是一个创建型的模式。原型二字表明了该模式应该有一个样板实例,用户从这个样板对象中复制一个内部属性一致的对象,这个过程也就是我们称的“克隆”。被复制的实例就是我们所称的“原型”,这个原型是可定制的。原型模式多用于创建复杂的或者构造耗时的实例,因为这种情况下,复制一个已经存在的实例可使程序运行更高效。关键就是两个字:克隆

 

对象克隆简介

对象克隆,说白了,就是将已实例化的对象复制一个出来,有个别同学就要问了,字节new 出来或者用反射创建一个实例出来不就好了吗? 干嘛要克隆? 当然你可以new也可以反射,但是你new出来的对象都是空的,我们克隆是是将已有内容的对象复制一个一模一样的出来,比如我们看看下面这个复制对象的案例;


// 实例化对象
StudentInfo studentInfo = new StudentInfo();
studentInfo.setName("张三");
studentInfo.setAge(16);
studentInfo.setHeight(149);
studentInfo.setLoginName(zhangsan);
studentInfo.setStatus(1);
studentInfo.setAddress("广东省深圳市南山区深圳湾一号3栋28楼2802房");
.......
studentInfo.setN("N"); // 第N个对象
// 复制对象
StudentInfo copyInfo = new StudentInfo();
copyInfo.setName(studentInfo.getName());
copyInfo.setAge(studentInfo.getAge());
copyInfo.setHeight(studentInfo.getHeight());
copyInfo.setLoginName(studentInfo.getLoginName());
copyInfo.setStatus(studentInfo.getStatus());
copyInfo.setAddress(studentInfo.getAddress());
........
copyInfo.setN(studentInfo.getN()); // 设置第N个对象

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享