当前位置: 首页 > news >正文

python策略模式

策略模式是一种行为设计模式,它通过定义一系列算法,将每个算法封装起来,并使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。

下面我们将创建一个示例,其中有多种支付方式(例如信用卡支付和支付宝支付)。我们将使用策略模式来实现这几种支付方式。

1.定义策略接口


from abc import ABC, abstractmethod

class PaymentStrategy(ABC):
    @abstractmethod
    def pay(self, amount: float):
        pass

2.实现具体策略



class CreditCardPayment(PaymentStrategy):
    def __init__(self, card_number: str):
        self.card_number = card_number

    def pay(self, amount: float):
        print(f"支付 {amount} 元,通过信用卡 {self.card_number} 完成支付。")


class AlipayPayment(PaymentStrategy):
    def __init__(self, account_id: str):
        self.account_id = account_id

    def pay(self, amount: float):
        print(f"支付 {amount} 元,通过支付宝账户 {self.account_id} 完成支付。")

3.创建上下文,使用具体的策略进行支付。

class PaymentContext:
    def __init__(self, payment_strategy: PaymentStrategy):
        self.payment_strategy = payment_strategy

    def execute_payment(self, amount: float):
        self.payment_strategy.pay(amount)

4. 主程序中调用


def main():
    # 使用信用卡支付
    credit_card_payment = CreditCardPayment(card_number="1234-5678-9012-3456")
    payment_context = PaymentContext(payment_strategy=credit_card_payment)
    payment_context.execute_payment(100.0)

    print()

    # 使用支付宝支付
    alipay_payment = AlipayPayment(account_id="user@example.com")
    payment_context = PaymentContext(payment_strategy=alipay_payment)
    payment_context.execute_payment(200.0)

if __name__ == "__main__":
    main()

相关文章:

  • OpenBMC:BmcWeb 生效路由2 Trie字典树
  • 《Tr0ll2 靶机渗透实战:弱口令+SUID+两种缓冲区溢出+ 提权完整+fcrackzip暴力破解+shellshock漏洞+脏牛三种root提权复盘》
  • 企业级大模型微调
  • SAP-ABAP:SAP IDoc技术详解:架构、配置与实战
  • 若依专题——基础应用篇
  • 如何实现多维度风险排查与合规管理?
  • 如何防御TCP洪泛攻击
  • 考研408-数据结构完整代码 线性表的链式存储结构 - 单链表
  • 多网络选择路由(windows环境)
  • 分布式共识算法解密:从Paxos到Raft的演进之路
  • 容器C++
  • CI/CD(八) gitlab搭配Jenkins的ci/cd配置
  • OpenHarmony NativeC++应用开发speexdsp噪声消除案例
  • word光标一直闪的解决办法
  • 【TCP】三次握手,四次挥手详解--UDP和TCP协议详解
  • 推荐一个好用的文字转语音网站
  • 林曦:在枯燥里积累能力,把平常过成精进的日常
  • 基于Pycatia的智能孔特征识别技术:无参模型圆心自动化提取方案
  • electron打包vue2项目流程
  • 【Java】——程序逻辑控制(构建稳健代码的基石)
  • 网站合作建设合同/网站提交收录
  • 石材做网站/网站黄页推广软件
  • 做网站开发需要培训吗/友情链接名词解释
  • 小型手机网站建设多少钱/网络服务运营商
  • 科技创新网站建设策划书/搜索引擎关键词优化方案
  • 龙岗 网站建设哪/百度网站优化方案