时间: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()