引言
策略模式是一种行为型设计模式,允许算法独立于使用它的客户端而变化。这使得我们可以根据不同的情况选择不同的算法或策略来解决问题,从而增强系统的灵活性。在日常开发中,策略模式常用于处理多种算法或行为之间的切换,比如在电子商务系统中实现多种支付方式,在游戏开发中实现角色的不同攻击模式等。
基础语法介绍
核心概念
- 策略接口(Strategy Interface):定义了一组算法应该具有的公共接口。
- 具体策略类(Concrete Strategy Classes):实现了策略接口,每个类代表一种具体的算法或策略。
- 上下文(Context):使用策略接口,并且可以在运行时动态地改变所使用的具体策略类。
基本语法规则
在Python中,实现策略模式通常涉及定义一个抽象基类(或接口),然后创建多个继承自该基类的具体类来表示不同的策略。上下文对象负责调用策略对象的方法。
from abc import ABC, abstractmethod
class Strategy(ABC):
@abstractmethod
def do_algorithm(self, data):
pass
class ConcreteStrategyA(Strategy):
def do_algorithm(self, data):
return sorted(data)
class ConcreteStrategyB(Strategy):
def do_algorithm(self, data):
return reversed(sorted(data))
class Context:
def __init__(self, strategy: Strategy):
self._strategy = strategy
def set_strategy(self, strategy: Strategy):
self._strategy = strategy
def do_some_business_logic(self, data):
result = self._strategy.do_algorithm(data)
print(f"Sorting data with {
type(self._strategy).__name__}: