跳至内容

工厂模式

Golang 中的工厂模式

1. 工厂模式概念

工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式,而无需向客户端暴露实例化逻辑。在 Go 语言中,工厂模式通常通过以下方式实现:

  • 简单工厂:一个工厂函数根据输入参数返回不同实例
  • 工厂方法:定义一个创建对象的接口,让子类决定实例化哪个类
  • 抽象工厂:创建相关或依赖对象的家族,而不需要明确指定具体类

2. Go 实现示例

简单工厂示例

package payment

// 支付接口
type Payment interface {
    Pay(amount float64) string
}

// 现金支付
type CashPayment struct{}

func (c *CashPayment) Pay(amount float64) string {
    return fmt.Sprintf("现金支付 %.2f 元", amount)
}

// 信用卡支付
type CreditCardPayment struct{}

func (c *CreditCardPayment) Pay(amount float64) string {
    return fmt.Sprintf("信用卡支付 %.2f 元", amount)
}

// 支付工厂
func NewPayment(method string) Payment {
    switch method {
    case "cash":
        return &CashPayment{}
    case "credit":
        return &CreditCardPayment{}
    default:
        return nil
    }
}

使用示例

payment := payment.NewPayment("cash")
result := payment.Pay(100.0)
fmt.Println(result) // 输出: 现金支付 100.00 元
最后更新于