Golang 使用工厂方法创建结构体实例
package main
import "fmt"
// 定义一个接口,用于描述所有可以创建的对象类型
type Creator interface {
Create() interface{}
}
// 定义具体的结构体,用于创建具体的对象
type ConcreteCreator struct{}
// 实现Creator接口的Create方法,返回一个具体的对象
func (cc ConcreteCreator) Create() interface{} {
return &ConcreteProduct{Value: "ConcreteProduct instance"}
}
// 定义一个产品接口,所有产品都应实现此接口
type Product interface {
Use()
}
// 定义一个具体的产品
type ConcreteProduct struct {
Value string
}
// 实现Product接口的Use方法
func (cp *ConcreteProduct) Use() {
fmt.Println(cp.Value)
}
func main() {
// 创建一个具体的创建器实例
creator := ConcreteCreator{}
// 使用创建器创建一个具体的产品实例
product := creator.Create().(Product)
// 使用产品
product.Use()
}
这段代码定义了一个简单的工厂方法模式,其中包含一个创建器结构体ConcreteCreator
和一个产品接口Product
。创建器具有创建产品的方法Create
,而产品具有使用其功能的方法Use
。在main
函数中,我们创建了一个创建器实例,并使用该实例创建了一个产品实例,然后展示了如何使用该产品。这是一个简单的工厂方法模式的实现,适用于学习和教学目的。
评论已关闭