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

Python Middle Без компании
Как реализовать паттерн стратегия в Python
Ответы
Паттерн Стратегия позволяет выбирать алгоритм во время выполнения программы, инкапсулируя их в отдельные классы. ``` from abc import ABC, abstractmethod class Strategy(ABC): @abstractmethod def execute(self, data): pass class ConcreteStrategyA(Strategy): def execute(self, data): return sorted(data) class ConcreteStrategyB(Strategy): def execute(self, data): return sorted(data, reverse=True) class Context: def __init__(self, strategy: Strategy): self._strategy = strategy def set_strategy(self, strategy: Strategy): self._strategy = strategy def execute_strategy(self, data): return self._strategy.execute(data) # Использование data = [5, 2, 8, 1] context = Context(ConcreteStrategyA()) print(context.execute_strategy(data)) # [1, 2, 5, 8] context.set_strategy(ConcreteStrategyB()) print(context.execute_strategy(data)) # [8, 5, 2, 1] ``` Ключевые моменты: - Абстрактный класс Strategy определяет интерфейс алгоритмов - Конкретные стратегии реализуют этот интерфейс - Context хранит ссылку на стратегию и делегирует ей работу - Стратегию можно менять динамически через set_strategy()