原型模式
特点
通过复制现有对象来创建新对象
在 Go 中,原型模式是一种创建型设计模式,允许对象通过复制现有对象来创建新对象,而不是通过类实例化。这在需要大量相似对象时非常有用。
下面是一个简单的 Go 中原型模式的示例:
package main
import "fmt"
// Cloneable 是一个接口,定义了 Clone 方法
type Cloneable interface {
Clone() Cloneable
}
// ConcreteType 是一个具体的类型,实现了 Cloneable 接口
type ConcreteType struct {
Field1 string
Field2 int
}
// Clone 方法返回一个该对象的副本
func (c *ConcreteType) Clone() Cloneable {
return &ConcreteType{
Field1: c.Field1,
Field2: c.Field2,
}
}
func main() {
original := &ConcreteType{
Field1: "Original",
Field2: 42,
}
// 通过 Clone 方法创建对象的副本
clone := original.Clone().(*ConcreteType)
fmt.Printf("Original: %v\n", original)
fmt.Printf("Clone: %v\n", clone)
}
关键点
- 接口定义: 定义一个
Cloneable接口,包含Clone方法 。 - 具体类型实现: 具体类型实现
Clone方法,返回对象的副本。 - 浅拷贝与深拷贝: 需要根据实际需求决定是进行浅拷贝还是深拷贝。
使用场景
- 需要创建大量相似对象时。
- 希望避免重复初始化复杂对象的开销。
- 在需要复制对象的情况下,确保复制的对象与原对象相互独立。