golang创建式设计模式---工厂模式
package main
import "fmt"
// 定义一个接口,用于定义所有具体产品的通用接口
type Product interface {
Use() string
}
// 定义两个具体的产品
type ConcreteProductA struct{}
func (p *ConcreteProductA) Use() string {
return "使用产品A"
}
type ConcreteProductB struct{}
func (p *ConcreteProductB) Use() string {
return "使用产品B"
}
// 定义一个工厂接口
type Factory interface {
CreateProduct() Product
}
// 定义两个具体的工厂,用于创建对应的产品
type ConcreteFactoryA struct{}
func (f *ConcreteFactoryA) CreateProduct() Product {
return &ConcreteProductA{}
}
type ConcreteFactoryB struct{}
func (f *ConcreteFactoryB) CreateProduct() Product {
return &ConcreteProductB{}
}
func main() {
// 创建工厂A
factoryA := &ConcreteFactoryA{}
// 使用工厂A创建产品A
productA := factoryA.CreateProduct()
fmt.Println(productA.Use())
// 创建工厂B
factoryB := &ConcreteFactoryB{}
// 使用工厂B创建产品B
productB := factoryB.CreateProduct()
fmt.Println(productB.Use())
}
这段代码定义了一个简单的工厂方法模式,展示了如何在Go语言中实现。代码中定义了一个Product
接口和两个具体的产品ConcreteProductA
和ConcreteProductB
。接着定义了一个Factory
接口和两个具体的工厂ConcreteFactoryA
和ConcreteFactoryB
。在main
函数中,我们创建了工厂实例,并使用它们创建了产品实例,然后调用产品的Use
方法。这展示了如何使用工厂来创建产品,并在不改变客户端代码的情况下更换产品类型。
评论已关闭