【设计模式】 工厂模式
工厂模式(Factory Pattern)是一种创建型设计模式,它定义了一个用于创建对象的接口,但将具体的对象创建延迟到子类中。在 Golang 中实现工厂模式通常使用函数来实现。
下面是一个使用 Golang 实现工厂模式的示例代码:
package main
import "fmt"
type Product interface {
GetName() string
}
type ProductA struct{}
func (p *ProductA) GetName() string {
return "Product A"
}
type ProductB struct{}
func (p *ProductB) GetName() string {
return "Product B"
}
func CreateProduct(name string) Product {
switch name {
case "A":
return &ProductA{}
case "B":
return &ProductB{}
default:
return nil
}
}
func main() {
productA := CreateProduct("A")
fmt.Println(productA.GetName())
productB := CreateProduct("B")
fmt.Println(productB.GetName())
}
在上面的代码中,我们定义了一个 Product 接口,它包含一个 GetName 方法,用于获取产品名称。接下来,我们定义了两个具体的产品类:ProductA 和 ProductB,它们实现了 Product 接口的 GetName 方法。
我们还定义了一个 CreateProduct 函数,该函数根据传入的产品名称来创建具体的产品实例。在 CreateProduct 函数中,我们使用 switch 语句根据产品名称来创建相应的产品实例。
最后,在 main 函数中,我们分别使用 CreateProduct 函数来创建 ProductA 和 ProductB 实例,并输出它们的名称。可以看到,我们只需要传入相应的产品名称,就可以创建相应的产品实例,而无需关心具体的产品实现细节。这正是工厂模式的优势所在,它将对象的创建与使用代码分离开来,使得客户端代码更加简洁和易于维护。