创建型设计模式-原型模式

69 阅读1分钟

关键词: 拷贝

原型模式(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 方法来克隆原型对象。这种方式可以通过克隆现有对象来创建新对象,而无需直接使用构造函数。

克隆和创建的差别分析

克隆可以隐藏创建的一些细节,如果后期需要改动,只需要在克隆的基础上在调整部分字段即可;