关键词: 拷贝
原型模式(Prototype Pattern):通过复制现有的实例来创建新的实例,而不是通过实例化新的对象。 原型模式(Prototype Pattern)允许创建对象的一种方法是通过克隆现有对象而不是使用构造函数。以下是一个简单的伪代码示例,演示了原型模式的实现:
// 原型接口
protocol Prototype {
func clone() -> Prototype
}
// 具体原型类
class ConcretePrototype: Prototype {
var field1: String
var field2: String
// 构造函数
init(field1: String, field2: String) {
self.field1 = field1
self.field2 = field2
}
// 克隆方法
func clone() -> Prototype {
// 创建新对象并复制字段值
return ConcretePrototype(field1: self.field1, field2: self.field2)
}
}
// 客户端代码
class Client {
var prototype: Prototype?
// 设置原型对象
func setPrototype(prototype: Prototype) {
self.prototype = prototype
}
// 克隆原型对象
func clonePrototype() -> Prototype? {
guard let prototype = self.prototype else {
return nil
}
return prototype.clone()
}
}
// 使用示例
// 创建具体原型对象
let prototype = ConcretePrototype(field1: "field1_value", field2: "field2_value")
// 设置原型对象
let client = Client()
client.setPrototype(prototype: prototype)
// 克隆原型对象
let clonedPrototype = client.clonePrototype()
在这个 Swift 示例中,我们定义了一个 Prototype 协议,并实现了一个具体的原型类 ConcretePrototype。客户端代码 Client 可以设置原型对象并通过 clonePrototype 方法来克隆原型对象。这种方式可以通过克隆现有对象来创建新对象,而无需直接使用构造函数。
克隆和创建的差别分析
克隆可以隐藏创建的一些细节,如果后期需要改动,只需要在克隆的基础上在调整部分字段即可;