🍪 原型模式
2022年6月20日
- 设计模式
🍪 原型模式
1. 概述
1) 是什么
- 通过该方法可以快速创建并得到一个对象的克隆对象
2) 优点
- 可快速得到克隆对象,无需关注对象类的内部属性类
- 减少普通获取对象进行的属性赋值、初始化等操作
3) 缺点
- 涉及多层引用对象时,实现较复杂
2. 代码示例
1) 场景 & 目标
- 有一种车,它包含以下属性:
- 基本数据类型属性:
- 座位数 [seats]
- 引用数据类型属性:
- 引擎 [Engine]
- 排量 [volume]
- 里程 [mileage]
- 引擎 [Engine]
- 基本数据类型属性:
- 目前已经有一辆该汽车,现在想快速得到跟这辆车一模一样参数值的车
2) 浅拷贝 - 代码示例
- 浅拷贝:
- 原车 & 克隆车 的基本数据类型 & 引用数据类型的值均相同
- 当修改 原车 | 克隆车 的基本数据类型属性时,两辆车的该属性值互不影响
- 当修改 原车 | 克隆车 的引用数据类型属性时,一种车的属性改变,体现在另一辆车的属性也会发生相同的改变
- 也就是说,两者共享同一个对象
3) 深拷贝 - 代码示例
- 深拷贝:
- 原车 & 克隆车 的基本数据类型 & 引用数据类型的值均相同
- 当修改 原车 | 克隆车 的基本数据类型属性时,两辆车的该属性值互不影响
- 当修改 原车 | 克隆车 的引用数据类型属性时,两辆车的该属性值互不影响
- 也就是说,两者不共享同一个对象
3. 应用
- 只要实现 Cloneable 接口即可实现简单的浅拷贝
- 要想实现深拷贝,重写 clone() 方法即可