使用Python中的策略模式来处理复杂业务逻辑

2023-04-04 00:00:00 模式 逻辑 策略

首先,我们定义一个抽象策略类 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中的策略模式来处理复杂业务逻辑的一个简单范例。

相关文章