工厂模式
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 元最后更新于