ZBLOG

golang 工厂方法模式

工厂方法模式(Factory Method)是一种创建型设计模式,它定义了一个用于创建对象的接口,让子类决定将哪些类实例化。工厂方法模式使得一个类的实例化延迟到其子类。

下面是一个 Golang 实现工厂方法模式的示例代码:

// 定义产品接口
type Product interface {
    GetName() string
}

// 定义具体产品 A
type ProductA struct {}

func (p *ProductA) GetName() string {
    return "Product A"
}

// 定义具体产品 B
type ProductB struct {}

func (p *ProductB) GetName() string {
    return "Product B"
}

// 定义工厂接口
type Factory interface {
    CreateProduct() Product
}

// 具体工厂 A,生产产品 A
type FactoryA struct {}

func (f *FactoryA) CreateProduct() Product {
    return &ProductA{}
}

// 具体工厂 B,生产产品 B
type FactoryB struct {}

func (f *FactoryB) CreateProduct() Product {
    return &ProductB{}
}

func main() {
    factoryA := &FactoryA{}
    productA := factoryA.CreateProduct()
    fmt.Println(productA.GetName())

    factoryB := &FactoryB{}
    productB := factoryB.CreateProduct()
    fmt.Println(productB.GetName())
}

在这个示例中,我们定义了产品接口 Product,并且有两个具体产品实现了该接口:ProductAProductB。同时,我们还定义了一个工厂接口 Factory,并且有两个具体工厂实现了该接口:FactoryAFactoryBFactoryA 生产产品 A,FactoryB 生产产品 B。

在代码最后,我们使用具体工厂创建了两个产品,并且打印出它们的名称。

工厂方法模式的优点是:

  1. 客户端和具体产品之间解耦,客户端无需关心具体产品是如何创建的。
  2. 增加新产品时,只需要增加一个具体产品类和相应的具体工厂类即可,无需修改现有代码。

缺点是:

  1. 每新增一个产品就需要新增一个具体产品类和相应的具体工厂类,如果产品种类过多,会导致类的数量急剧增加,不易维护。
  2. 由于增加了抽象层,增加了系统的复杂度。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=211

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?