工厂模式Golang实现
在 Golang 中,可以使用工厂模式来创建对象
package main
import (
"fmt"
)
// 定义产品接口
type Product interface {
Use()
}
// 具体产品A
type ConcreteProductA struct {
}
func (p *ConcreteProductA) Use() {
fmt.Println("use product A")
}
// 具体产品B
type ConcreteProductB struct {
}
func (p *ConcreteProductB) Use() {
fmt.Println("use product B")
}
// 工厂接口
type Factory interface {
CreateProduct() Product
}
// 具体工厂A
type ConcreteFactoryA struct {
}
func (f *ConcreteFactoryA) CreateProduct() Product {
return &ConcreteProductA{}
}
// 具体工厂B
type ConcreteFactoryB struct {
}
func (f *ConcreteFactoryB) CreateProduct() Product {
return &ConcreteProductB{}
}
func main() {
// 使用具体工厂A创建产品A
factoryA := &ConcreteFactoryA{}
productA := factoryA.CreateProduct()
productA.Use()
// 使用具体工厂B创建产品B
factoryB := &ConcreteFactoryB{}
productB := factoryB.CreateProduct()
productB.Use()
}
在上面的示例中,首先定义了产品接口 Product
和具体产品 ConcreteProductA
和 ConcreteProductB
。然后定义了工厂接口 Factory
和具体工厂 ConcreteFactoryA
和 ConcreteFactoryB
。在 CreateProduct
方法中,分别创建了不同类型的产品
在 main
函数中,首先使用具体工厂A创建产品A,然后使用具体工厂B创建产品B,并分别调用它们的 Use
方法