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)
  1. 主程序中调用

    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()

相关推荐
半亩码田3 分钟前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#
Wzx1980121 小时前
python沙箱和docker沙箱你选对了吗?
开发语言·python·docker
Python私教1 小时前
签名 URL 刷新导致审批失效?别急着删掉所有 query
python·安全
牧羊人.3331 小时前
Python 办公自动化从入门到入土|09 数据容器之字典
开发语言·python
Zane19941 小时前
类变量与实例变量:一个共享列表引发的线上事故
后端·python
Python私教1 小时前
一次性批准令牌:挡住旧授权误发新版本的工程设计
python·安全
for_ever_love__2 小时前
python基础语法学习: 数据容器
windows·python·学习
aiqianji2 小时前
文风接近真人的AI生成短篇小说软件有哪些?
人工智能·python
Sylvia33.2 小时前
从轮询到推送:足球数据API架构演进与火星数据技术拆解
java·服务器·网络·python·websocket·架构
瑞码空间3 小时前
Python爬虫进阶实战笔记
开发语言·python·计算机·python爬虫