时间:2023-02-11 09:49:27 | 栏目:Python代码 | 点击:次
策略模式中,首先定义了一系列不同的算法,并把它们一一封装起来,然后在策略类中,使这些算法可以相互替换。这意味着,让一个类的行为(算法)可以在类的实例化对象运行时进行更改。
优点:
缺点:
Client 必须了解不同的策略行为细节。根据不同的客户属性,采用不同的折扣策略来计算订单中的商品价格:

实体角色:
import abc
# 抽象策略
class Strategy(metaclass=abc.ABCMeta):
@abc.abstractmethod
def execute(self, data):
pass
# 具体策略 1
class Strategy1(Strategy):
def execute(self, data):
print(f"使用策略1执行{data}")
# 具体策略2
class Strategy2(Strategy):
def execute(self, data):
print(f"使用策略2执行{data}")
# 上下文
class Context:
def __init__(self, data):
self.strategy = None
self.data = data
def set_strategy(self, strategy):
self.strategy = strategy
def do_strategy(self):
if self.strategy:
self.strategy.execute(self.data)
else:
print("请先配置策略!")
if __name__ == "__main__":
data = "测试数据"
s1 = Strategy1()
s2 = Strategy2()
context = Context(data)
context.set_strategy(s1)
context.do_strategy()
context.set_strategy(s2)
context.do_strategy()