Skip to main content

原型模式

特点

通过复制现有对象来创建新对象

在 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 方法,返回对象的副本。
  • 浅拷贝与深拷贝: 需要根据实际需求决定是进行浅拷贝还是深拷贝。

使用场景

  • 需要创建大量相似对象时。
  • 希望避免重复初始化复杂对象的开销。
  • 在需要复制对象的情况下,确保复制的对象与原对象相互独立。