Back to questions
Junior — Middle
62
Каким образом можно реализовать паттерн стратегия при программировании на Python?
Answer from AI
sobes.tech AI
Паттерн стратегия позволяет менять алгоритмы поведения объекта во время выполнения, инкапсулируя их в отдельные классы или функции.
В Python это можно реализовать с помощью классов или функций, передаваемых как стратегии.
Пример с классами:
class Strategy:
def execute(self, data):
pass
class StrategyA(Strategy):
def execute(self, data):
return sorted(data)
class StrategyB(Strategy):
def execute(self, data):
return list(reversed(data))
class Context:
def __init__(self, strategy: Strategy):
self._strategy = strategy
def set_strategy(self, strategy: Strategy):
self._strategy = strategy
def do_action(self, data):
return self._strategy.execute(data)
context = Context(StrategyA())
print(context.do_action([3,1,2])) # [1, 2, 3]
context.set_strategy(StrategyB())
print(context.do_action([3,1,2])) # [2, 1, 3]
Так можно легко менять поведение объекта, не меняя его код.