Sobes.tech
Back to questions
Junior — Middle
64

Применяли ли вы паттерн Стратегия в своих проектах?

Answer from AI

sobes.tech AI

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

В Python я применял этот паттерн, например, для реализации разных способов сортировки данных в зависимости от условий:

class SortStrategy:
    def sort(self, data):
        pass

class QuickSortStrategy(SortStrategy):
    def sort(self, data):
        return sorted(data)  # упрощённо

class ReverseSortStrategy(SortStrategy):
    def sort(self, data):
        return sorted(data, reverse=True)

class Context:
    def __init__(self, strategy: SortStrategy):
        self._strategy = strategy

    def set_strategy(self, strategy: SortStrategy):
        self._strategy = strategy

    def sort_data(self, data):
        return self._strategy.sort(data)

# Использование
context = Context(QuickSortStrategy())
print(context.sort_data([3, 1, 2]))  # [1, 2, 3]
context.set_strategy(ReverseSortStrategy())
print(context.sort_data([3, 1, 2]))  # [3, 2, 1]

Такой подход позволяет легко расширять и менять алгоритмы без изменения клиентского кода.