工作中常用到的设计模式-原型模型
一、原型模型
原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象
java建对象的几种方式
使用new关键字 → 调用了构造函数
使用Class类的newInstance方法 → 调用了构造函数
使用Constructor类的newInstance方法 → 调用了构造函数
使用clone方法 → 没有调用构造函数
使用反序列化 → 没有调用构造函数
二、 深克隆和浅克隆的理解
深克隆和浅克隆的本质区别:
- 数据拷贝后两者之间是否有关联
- 改变一个值是否会影响到另一个数值变化
2.1、浅克隆
拷贝对象和原始对象的引用类型引用同一个对象。
- 实现Clonenable接口
- 工具类BeanUtils和PropertyUtils进行对象复制
2.2、深克隆
拷贝对象和原始对象的引用类型引用不同对象。
- 每个对象都要实现Clonenable接口并重写Object类中的clone()方法
- 序列化,必须实现 Serializable 接口
- Apache Commons工具包SerializationUtils.clone(T object);
- 通过 JSON 工具类实现深克隆
- 通过构造方法实现深克隆(手动new对象)