Sobes.tech
Junior — Middle
83

¿Cómo se puede implementar el patrón estrategia en programación en Python?

Respuesta de la IA

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]

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