python——策略模式(Strategy)

内容:定义一系列的算法,把它们一个个封装起来,并且使它们可互相替换。本模式使得算法可独立于使用它的客户而变化。

角色:

  • 抽象策略(Strategy)
  • 具体策略(ConcreteStrategy)
  • 上下文(Context)

适用场景:

  • 许多相关的类仅仅是行为有异
  • 需要使用一个算法的不同变体
  • 算法使用了客户端无需知道的数据
  • 一个类中的多种行为以多个条件语句的形式存在,可以将这些行为封装入不同的策略类中。

优点:

  • 定义了一系列可重用的算法和行为。
  • 消除了一些条件语句
  • 可以提供相同行为的不同实现。

缺点:

  • 客户必须了解不同的策略
  • 策略与上下文之间的通信开销
  • 增加了对象的数目

实例:

略,后面补

https://www.cnblogs.com/taosiyu/p/11293949.html

 

### 工厂模式与策略模式的概念 #### 一、工厂模式(Factory Pattern) 工厂模式是一种创建型设计模式,其核心目的是通过定义一个用于创建对象的接口来隐藏具体的实现细节。它允许开发者在不指定具体类的情况下创建对象实例。这种模式通常分为简单工厂模式、工厂方法模式以及抽象工厂模式。 工厂模式的主要优点在于将对象的创建逻辑集中到特定的地方,从而使得程序更易于维护和扩展[^1]。以下是工厂模式的一个典型代码示例: ```python class Product: def operation(self): pass class ConcreteProductA(Product): def operation(self): return "ConcreteProductA" class ConcreteProductB(Product): def operation(self): return "ConcreteProductB" def create_product(product_type): if product_type == 'A': return ConcreteProductA() elif product_type == 'B': return ConcreteProductB() product = create_product('A') print(product.operation()) # 输出: ConcreteProductA ``` #### 二、策略模式Strategy Pattern) 策略模式是一种行为型设计模式,旨在提供一系列可互换的行为算法,并让这些算法可以动态切换。该模式的核心思想是将不同的算法封装成独立的对象,从而使它们可以在运行时灵活替换。 策略模式的关键优势在于能够减少条件语句的数量并提高系统的灵活性[^2]。下面是一个简单的策略模式实现例子: ```python from abc import ABC, abstractmethod class Strategy(ABC): @abstractmethod def execute(self, data): pass class ConcreteStrategyAdd(Strategy): def execute(self, data): return sum(data) class ConcreteStrategyMultiply(Strategy): def execute(self, data): result = 1 for num in data: result *= num return result class Context: def __init__(self, strategy: Strategy): self._strategy = strategy def set_strategy(self, strategy: Strategy): self._strategy = strategy def perform_operation(self, data): return self._strategy.execute(data) context = Context(ConcreteStrategyAdd()) data = [1, 2, 3, 4] result_add = context.perform_operation(data) # 使用加法策略 print(result_add) # 输出: 10 context.set_strategy(ConcreteStrategyMultiply()) result_multiply = context.perform_operation(data) # 切换成乘法策略 print(result_multiply) # 输出: 24 ``` ### 三、工厂模式与策略模式的区别 尽管两种模式都涉及到了对象的创建或操作方式的选择,但它们的应用场景和目的存在显著差异。工厂模式主要关注于如何创建对象,而策略模式则侧重于如何改变对象的行为。此外,两者的分类也不同——工厂模式属于创建型模式,而策略模式则是行为型模式的一部分。 ### 四、综合使用案例 在一个复杂的软件系统中,可能需要同时运用工厂模式和策略模式。例如,在开发一款游戏时,可以通过工厂模式生成不同类型的角色(战士、法师等),并通过策略模式为每个角色分配独特的攻击技能。这样不仅简化了角色管理流程,还增强了技能配置的灵活性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值