在Python中实现策略模式通常涉及以下几个步骤:
1. 定义一个抽象策略接口,通常使用`ABC`模块中的`ABCMeta`和`abstractmethod`来创建。
2. 创建具体策略类,这些类实现抽象策略接口,并提供具体的算法实现。
3. 创建上下文类,该类持有一个策略对象的引用,并提供方法来设置和使用策略。
from abc import ABC, abstractmethod
抽象策略接口
class Strategy(ABC):
@abstractmethod
def do_something(self):
pass
具体策略A
class ConcreteStrategyA(Strategy):
def do_something(self):
print("ConcreteStrategyA: Doing something.")
具体策略B
class ConcreteStrategyB(Strategy):
def do_something(self):
print("ConcreteStrategyB: Doing something.")
上下文类
class Context:
def __init__(self, strategy: Strategy):
self._strategy = strategy
def set_strategy(self, strategy: Strategy):
self._strategy = strategy
def do_strategy(self):
self._strategy.do_something()
使用示例
if __name__ == "__main__":
context = Context(ConcreteStrategyA())
context.do_strategy() 输出:ConcreteStrategyA: Doing something.
context.set_strategy(ConcreteStrategyB())
context.do_strategy() 输出:ConcreteStrategyB: Doing something.
在这个例子中,`Strategy`是一个抽象基类,定义了一个抽象方法`do_something`。`ConcreteStrategyA`和`ConcreteStrategyB`是具体策略类,它们分别实现了`do_something`方法。`Context`类作为上下文,持有一个策略对象的引用,并提供了`set_strategy`和`do_strategy`方法来设置和使用策略。
策略模式使得算法可以独立于使用它的客户而变化,简化了单测试,因为每个算法都有自己的类,可以单独进行测试
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://sigusoft.com/bj/141923.html