设计模式-策略模式

时间:2025-05-14 20:59:00
# 策略接口:支付方式 class PaymentStrategy: def pay(self, amount): pass # 具体策略类:支付宝支付 class AlipayStrategy(PaymentStrategy): def pay(self, amount): print(f"支付宝支付:{amount}元,使用花呗付款") # 具体策略类:微信支付 class WechatPayStrategy(PaymentStrategy): def pay(self, amount): print(f"微信支付:{amount}元,零钱余额不足请换卡支付") # 具体策略类:银行卡支付 class BankCardStrategy(PaymentStrategy): def pay(self, amount): print(f"银行卡支付:{amount}元,尾号8866的储蓄卡") # 上下文类:收银台 class CheckoutCounter: def __init__(self): self._strategy = None # 当前支付策略 def set_strategy(self, strategy): """动态切换支付策略""" self._strategy = strategy def checkout(self, amount): """执行支付""" if self._strategy: self._strategy.pay(amount) else: print("请先选择支付方式") # 使用示例 counter = CheckoutCounter() # 顾客选择支付宝支付 counter.set_strategy(AlipayStrategy()) counter.checkout(100) # 输出:支付宝支付:100元,使用花呗付款 # 顾客临时改用微信支付 counter.set_strategy(WechatPayStrategy()) counter.checkout(200) # 输出:微信支付:200元,零钱余额不足请换卡支付 # 突然新增一个支付方式(不影响原有代码) class CreditCardStrategy(PaymentStrategy): def pay(self, amount): print(f"信用卡支付:{amount}元,享受12期免息") counter.set_strategy(CreditCardStrategy()) counter.checkout(300) # 输出:信用卡支付:300元,享受12期免息