工厂模式
package main
import "fmt"
// Product 是工厂模式的产品接口
type Product interface {
Use()
}
// Factory 是工厂模式的工厂接口
type Factory interface {
CreateProduct(productType string) Product
}
// ConcreteFactory 是具体的工厂实现
type ConcreteFactory struct{}
// CreateProduct 实现工厂接口,根据传入的 productType 返回不同的产品实例
func (f *ConcreteFactory) CreateProduct(productType string) Product {
switch productType {
case "A":
return &ProductA{}
case "B":
return &ProductB{}
default:
return nil
}
}
// ProductA 是具体的产品A
type ProductA struct{}
// Use 是产品A的方法
func (p *ProductA) Use() {
fmt.Println("ProductA is used")
}
// ProductB 是具体的产品B
type ProductB struct{}
// Use 是产品B的方法
func (p *ProductB) Use() {
fmt.Println("ProductB is used")
}
func main() {
factory := &ConcreteFactory{}
productA := factory.CreateProduct("A")
productA.Use()
productB := factory.CreateProduct("B")
productB.Use()
}
run 执行

该代码示例展示了如何在Go中使用工厂模式,定义了一个产品接口Product和工厂接口Factory,具体工厂ConcreteFactory根据传入的类型创建ProductA或ProductB对象,这两个产品类型分别实现了Use方法。

被折叠的 条评论
为什么被折叠?



