专业编程基础技术教程

网站首页 > 基础教程 正文

Python使用策略模式重构if else(python重构函数)

ccvgpt 2024-07-29 13:41:39 基础教程 12 ℃

策略模式可以用于重构if else的场景,常见的例子是支付方式的处理。假设我们有一个支付系统,支持支付宝、微信和银联三种支付方式,现在需要根据用户选择的支付方式来进行不同的处理。

传统的if-else实现方式

def pay(payment_method, amount):
    if payment_method == 'alipay':
        # 支付宝支付逻辑
        pass
    elif payment_method == 'wechat_pay':
        # 微信支付逻辑
        pass
    elif payment_method == 'union_pay':
        # 银联支付逻辑
        pass


Python使用策略模式重构if else(python重构函数)

策略模式重构

使用策略模式可以将不同的支付方式抽象成一个个策略类:

class PaymentStrategy:
    def pay(self, amount):
        pass

class AliPayStrategy(PaymentStrategy):
    def pay(self, amount):
        # 支付宝支付逻辑
        pass

class WechatPayStrategy(PaymentStrategy):
    def pay(self, amount):
        # 微信支付逻辑
        pass

class UnionPayStrategy(PaymentStrategy):
    def pay(self, amount):
        # 银联支付逻辑
        pass

然后在支付时只需要根据用户选择的支付方式来选择对应的策略类进行支付:

def pay(payment_method, amount):
    if payment_method == 'alipay':
        strategy = AliPayStrategy()
    elif payment_method == 'wechat_pay':
        strategy = WechatPayStrategy()
    elif payment_method == 'union_pay':
        strategy = UnionPayStrategy()
    strategy.pay(amount)

这样代码就变得更加简洁,也更加易于扩展和维护。每种支付方式的具体实现被封装到了对应的策略类中,可以方便地新增或修改支付方式,而不会影响到原有的代码逻辑。

Tags:

最近发表
标签列表