原型模式:对象克隆与复制的深度解析
1. 原型模式概述
原型模式是一种简单的设计模式。在该模式中,客户端知晓一个抽象的原型类,在运行时,任何属于该抽象原型子类的对象都能根据客户端的意愿进行克隆。这使得客户端无需手动创建,就能生成多个相同类型的实例。
原型模式的核心定义为:使用一个原型实例指定要创建的对象种类,并通过复制该原型来创建新对象。
2. 使用场景
以下情况可考虑使用原型模式:
- 需要创建独立于自身类型和创建方式的对象。
- 类的实例化在运行时确定。
- 不想为对应的产品层次结构创建工厂层次结构。
- 不同类的实例之间的差异仅在于少数状态组合,此时克隆相应数量的原型比手动实例化更方便。
- 类难以创建,如复合对象,其中每个组件都可以有其他组件作为子组件,克隆现有复合对象并修改副本会更容易。
常见的两种使用场景:
1. 有许多相关类,它们的行为略有不同,主要区别在于内部属性,如名称、图像等。
2. 需要使用复合(树)对象作为其他事物的基础,例如使用复合对象作为构建块来构建另一个复合对象。
3. 浅拷贝与深拷贝
当对象的成员变量包含指向内存中某个资源的指针时,复制该对象就涉及到浅拷贝和深拷贝的问题。
- 浅拷贝 :只复制指针的值,将其传递给新对象作为克隆。这会导致两个实例共享底层资源,因为指针只是存储内存中某个资源地址的占位符。例如,在克隆操作中,将资源指针的值复制到新对象,但实际资源并未复制。
- 深拷贝 :不仅复制指针的值
超级会员免费看
订阅专栏 解锁全文
13

被折叠的 条评论
为什么被折叠?



