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

龙岗做网站北京到安阳的火车

龙岗做网站,北京到安阳的火车,网上有几个购物平台,大气网站首页欣赏策略模式是一种行为设计模式,它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起,并让它们相互替换。 下面是使用 Python 实现策略模式的一个示例: 示例代码 假设我们有一个简单的购物车系统&#xf…

策略模式是一种行为设计模式,它允许你在运行时动态地改变对象的行为。这种模式的核心思想是将一组相关的算法封装在一起,并让它们相互替换。

下面是使用 Python 实现策略模式的一个示例:

示例代码

假设我们有一个简单的购物车系统,其中不同的支付方式有不同的折扣策略。我们将使用策略模式来实现这一功能。

1. 定义抽象基类(策略接口)
from abc import ABC, abstractmethodclass PaymentStrategy(ABC):@abstractmethoddef pay(self, amount):pass
2. 具体策略实现
class CreditCardPayment(PaymentStrategy):def pay(self, amount):print(f"Paying ${amount} with credit card.")return f"${amount} paid using credit card."class PayPalPayment(PaymentStrategy):def pay(self, amount):print(f"Paying ${amount} with PayPal.")return f"${amount} paid using PayPal."
3. 上下文类

上下文类负责使用具体的策略来进行支付。

class ShoppingCart:def __init__(self, payment_strategy: PaymentStrategy):self._items = []self.payment_strategy = payment_strategydef add_item(self, item):self._items.append(item)def calculate_total(self):return sum(item['price'] for item in self._items)def checkout(self):total_amount = self.calculate_total()return self.payment_strategy.pay(total_amount)
4. 测试策略模式
if __name__ == "__main__":cart = ShoppingCart(CreditCardPayment())cart.add_item({'name': 'Shirt', 'price': 20})cart.add_item({'name': 'Pants', 'price': 30})print(cart.checkout())cart = ShoppingCart(PayPalPayment())cart.add_item({'name': 'Shoes', 'price': 50})cart.add_item({'name': 'Hat', 'price': 15})print(cart.checkout())

解释

  1. 抽象基类(策略接口)

    • PaymentStrategy 类定义了一个抽象方法 pay,这是所有具体策略必须实现的方法。
  2. 具体策略实现

    • CreditCardPaymentPayPalPayment 分别实现了 pay 方法,提供了不同的支付逻辑。
  3. 上下文类

    • ShoppingCart 类持有一个 payment_strategy 属性,用于存放具体的支付策略。
    • checkout 方法计算总金额并调用当前策略的 pay 方法。
  4. 测试策略模式

    • 创建两个 ShoppingCart 对象,分别使用 CreditCardPaymentPayPalPayment 策略。
    • 添加商品并结算,观察不同支付策略的结果。

通过这种方式,你可以灵活地切换不同的支付策略,而无需修改上下文类的代码。这就是策略模式的主要优点之一。


完整可运行的代码库

from abc import ABC, abstractmethod# 抽象基类(策略接口)
class PaymentStrategy(ABC):@abstractmethoddef pay(self, amount):pass# 具体策略实现
class CreditCardPayment(PaymentStrategy):def pay(self, amount):print(f"Paying {amount} using credit card.")return f"{amount} paid using credit card."class PayPalPayment(PaymentStrategy):def pay(self, amount):print(f"Paying {amount} using PayPal.")return f"{amount} paid using PayPal."# 上下文类
class ShoppingCart:def __init__(self, payment_strategy: PaymentStrategy):self.items = []self.payment_strategy = payment_strategydef add_item(self, item):self.items.append(item)def remove_item(self, item):self.items.remove(item)def calculate_total(self):return sum(item['price'] for item in self.items)def checkout(self):total_amount = self.calculate_total()return self.payment_strategy.pay(total_amount)if __name__ == "__main__":cart = ShoppingCart(CreditCardPayment())cart.add_item({'name': 'Shirt', 'price': 20})cart.add_item({'name': 'Pants', 'price': 30})print(cart.checkout())cart = ShoppingCart(PayPalPayment())cart.add_item({'name': 'Shoes', 'price': 50})cart.add_item({'name': 'Hat', 'price': 15})print(cart.checkout())```

文章转载自:

http://T9MSGiWS.ktfbL.cn
http://lXZgrYIc.ktfbL.cn
http://aKwcEKSL.ktfbL.cn
http://QR4fxwE4.ktfbL.cn
http://q1XayO5a.ktfbL.cn
http://FZkhO3yn.ktfbL.cn
http://rfi1qyYC.ktfbL.cn
http://Bcpg57Tw.ktfbL.cn
http://9YzzU0NR.ktfbL.cn
http://SnRW3r2u.ktfbL.cn
http://24iMtunL.ktfbL.cn
http://qvn9UOnR.ktfbL.cn
http://Jc1ir1zi.ktfbL.cn
http://cBQtyaYo.ktfbL.cn
http://l8NSrvGz.ktfbL.cn
http://F9FBADtt.ktfbL.cn
http://7I3MSq6r.ktfbL.cn
http://KpiHAH7i.ktfbL.cn
http://oFQ8O3rZ.ktfbL.cn
http://pHQfmT3z.ktfbL.cn
http://wBEV2j4Q.ktfbL.cn
http://MSyXZJIV.ktfbL.cn
http://L2xO57CG.ktfbL.cn
http://DsmKnzyn.ktfbL.cn
http://NebIkDTO.ktfbL.cn
http://mA0NRv7V.ktfbL.cn
http://pbQtypMA.ktfbL.cn
http://lLyvKGxb.ktfbL.cn
http://X7tKYXI7.ktfbL.cn
http://IGkmwjCj.ktfbL.cn
http://www.dtcms.com/wzjs/770761.html

相关文章:

  • 进空间的网站凡客诚品的配送方式
  • 赣州市赣县区建设局网站北京营销推广公司
  • 怎么做网站的导航网站开发团队需要哪些
  • 给别人做网站 网站违法了如何做电商运营推广
  • 龙岩网站建设企业做母婴网站设计思路
  • 做一个网站需要什么手把手教你做网站 3
  • 广州网站优化网站建设公司介绍简介
  • 网站建设推广唯心磁遁8网站前期设计
  • 手机网站 普通网站网站建设策划书参考案例
  • html5网站图标哪里有建站代理加盟
  • 要想做一个好网站需要多久杭州app开发公司都集中在哪里
  • 网站建设高端设计广州外贸型网站设计
  • 医院网站建设意义足球哪个网站做的比较好
  • 网站的建设运营收费是哪些中国住房和城乡建设部查询网站6
  • 怎么申请建立网站wordpress主题需要ftp
  • 河北seo网站开发wordpress评论差价
  • 网站建设留言板怎么做如何做超一个电子商务网站
  • php网站开发是什么意思做软件与做网站建设有什么区别
  • 湖南系统建站怎么用如何构建成交型网站
  • 电子商务网站建设与规划案例做淘宝优惠券网站
  • 个人网站建设如何选服务器关于建设工程资料的网站
  • 网站建设制作网络营销公司泉州互联网公司排名
  • 烟台做网站的价格陕西建设厅官网首页
  • 广州营销型网站制作江苏建筑模板厂家
  • 如何用手机制作网站汕头h5建站
  • 句容建设局网站招标小程序开发公司有哪些
  • 甘肃网站备案审核个人网页设计图片素材
  • 博客网站素材游戏设计师网站有哪些
  • 网站建设一般多少钱方案东莞 网站建设多少钱
  • 设计展厅的公司温州网站的优化