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]
Такой подход позволяет легко расширять и менять алгоритмы без изменения клиентского кода.