Встречается на собеседованиях • сегодня

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

Паттерн Стратегия позволяет выбирать алгоритм во время выполнения программы, инкапсулируя их в отдельные классы.

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

text
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]

text

Ключевые моменты:
1. Абстрактный класс Strategy определяет интерфейс алгоритмов
2. Конкретные стратегии реализуют этот интерфейс
3. Context хранит ссылку на стратегию и делегирует ей работу
4. Стратегию можно менять динамически через set_strategy()
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы