🍪 原型模式

吞佛童子2022年6月20日
  • 设计模式
  • 创建型
  • 原型模式
大约 3 分钟

🍪 原型模式

1. 概述

1) 是什么

  • 通过该方法可以快速创建并得到一个对象的克隆对象

2) 优点

  • 可快速得到克隆对象,无需关注对象类的内部属性类
  • 减少普通获取对象进行的属性赋值、初始化等操作

3) 缺点

  • 涉及多层引用对象时,实现较复杂

2. 代码示例

1) 场景 & 目标

  • 有一种车,它包含以下属性:
    • 基本数据类型属性:
      • 座位数 [seats]
    • 引用数据类型属性:
      • 引擎 [Engine]
        • 排量 [volume]
        • 里程 [mileage]
  • 目前已经有一辆该汽车,现在想快速得到跟这辆车一模一样参数值的车

2) 浅拷贝 - 代码示例

  1. 浅拷贝:
    • 原车 & 克隆车 的基本数据类型 & 引用数据类型的值均相同
    • 当修改 原车 | 克隆车 的基本数据类型属性时,两辆车的该属性值互不影响
    • 当修改 原车 | 克隆车 的引用数据类型属性时,一种车的属性改变,体现在另一辆车的属性也会发生相同的改变
      • 也就是说,两者共享同一个对象

3) 深拷贝 - 代码示例

  1. 深拷贝:
    • 原车 & 克隆车 的基本数据类型 & 引用数据类型的值均相同
    • 当修改 原车 | 克隆车 的基本数据类型属性时,两辆车的该属性值互不影响
    • 当修改 原车 | 克隆车 的引用数据类型属性时,两辆车的该属性值互不影响
      • 也就是说,两者不共享同一个对象

3. 应用

  • 只要实现 Cloneable 接口即可实现简单的浅拷贝
  • 要想实现深拷贝,重写 clone() 方法即可
上次编辑于: 2022/6/20 下午8:24:47
贡献者: liuxianzhishou