使用Python中的策略模式来处理复杂业务逻辑
首先,我们定义一个抽象策略类 Strategy,它包含一个抽象方法 process_data,具体的策略类将实现该方法来处理数据:
from abc import ABC, abstractmethod class Strategy(ABC): @abstractmethod def process_data(self, data): pass
接下来,我们定义两个具体的策略类 StrategyA 和 StrategyB,它们实现了 process_data 方法来处理数据:
class StrategyA(Strategy): def process_data(self, data): # 处理逻辑 return data.upper() class StrategyB(Strategy): def process_data(self, data): # 处理逻辑 return data.lower()
接下来,我们定义一个上下文类 Context,它包含一个 Strategy 对象,并提供一个设置策略的方法 set_strategy,以及一个执行策略的方法 execute_strategy:
class Context: def __init__(self, strategy: Strategy): self.strategy = strategy def set_strategy(self, strategy: Strategy): self.strategy = strategy def execute_strategy(self, data): return self.strategy.process_data(data)
最后,我们可以使用上下文类来执行具体的策略,代码如下:
# 创建具体策略对象 strategy_a = StrategyA() strategy_b = StrategyB() # 创建上下文对象,设置初始策略为策略A context = Context(strategy_a) # 使用当前策略处理数据 result1 = context.execute_strategy("pidancode.com") print(result1) # 输出 "PIDANCODE.COM" # 切换策略为策略B context.set_strategy(strategy_b) # 使用当前策略处理数据 result2 = context.execute_strategy("皮蛋编程") print(result2) # 输出 "皮蛋编程"
以上就是使用Python中的策略模式来处理复杂业务逻辑的一个简单范例。
相关文章