闽公网安备 35020302035485号
// PaymentStrategy 接口定义了支付行为
type PaymentStrategy interface {
Pay()
}
// 堆代码 duidaima.com
// CreditCardStrategy 实现了信用卡支付策略
type CreditCardStrategy struct{}
func (c *CreditCardStrategy) Pay() {
fmt.Println("Payment processed using Credit Card.")
}
// DebitCardStrategy 实现了借记卡支付策略
type DebitCardStrategy struct{}
func (d *DebitCardStrategy) Pay() {
fmt.Println("Payment processed using Debit Card.")
}
// VisaCardStrategy 实现了Visa卡支付策略
type VisaCardStrategy struct{}
func (v *VisaCardStrategy) Pay() {
fmt.Println("Payment processed using Visa Card.")
}
// PaymentMethod 类型负责设置和执行支付策略
type PaymentMethod struct {
strategy PaymentStrategy
}
func (p *PaymentMethod) SetStrategy(s PaymentStrategy) {
p.strategy = s
}
func (p *PaymentMethod) ProcessPayment() {
p.strategy.Pay()
}
策略模式的优势与注意事项初始化与选择:明确策略的初始化时机和选择逻辑,确保系统的健壮性。