6、原型模式:对象克隆与复制的深度解析

原型模式:对象克隆与复制的深度解析

1. 原型模式概述

原型模式是一种简单的设计模式。在该模式中,客户端知晓一个抽象的原型类,在运行时,任何属于该抽象原型子类的对象都能根据客户端的意愿进行克隆。这使得客户端无需手动创建,就能生成多个相同类型的实例。

原型模式的核心定义为:使用一个原型实例指定要创建的对象种类,并通过复制该原型来创建新对象。

2. 使用场景

以下情况可考虑使用原型模式:
- 需要创建独立于自身类型和创建方式的对象。
- 类的实例化在运行时确定。
- 不想为对应的产品层次结构创建工厂层次结构。
- 不同类的实例之间的差异仅在于少数状态组合,此时克隆相应数量的原型比手动实例化更方便。
- 类难以创建,如复合对象,其中每个组件都可以有其他组件作为子组件,克隆现有复合对象并修改副本会更容易。

常见的两种使用场景:
1. 有许多相关类,它们的行为略有不同,主要区别在于内部属性,如名称、图像等。
2. 需要使用复合(树)对象作为其他事物的基础,例如使用复合对象作为构建块来构建另一个复合对象。

3. 浅拷贝与深拷贝

当对象的成员变量包含指向内存中某个资源的指针时,复制该对象就涉及到浅拷贝和深拷贝的问题。
- 浅拷贝 :只复制指针的值,将其传递给新对象作为克隆。这会导致两个实例共享底层资源,因为指针只是存储内存中某个资源地址的占位符。例如,在克隆操作中,将资源指针的值复制到新对象,但实际资源并未复制。
- 深拷贝 :不仅复制指针的值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值