工厂模式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 方法

 

posted @ 2023-04-05 14:55  SuperCodeX  阅读(27)  评论(0编辑  收藏  举报