Sobes.tech
Назад к вопросам
Junior — Middle
61

Каким образом можно реализовать паттерн стратегия при программировании на Python?

Ответ от нейросети

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]

Так можно легко менять поведение объекта, не меняя его код.