Back to questions
Junior — Middle
50
Имел ли опыт использования паттерна Стратегия в своих проектах?
Answer from AI
sobes.tech AI
Паттерн Стратегия позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми. В Python я использовал этот паттерн, например, для реализации разных способов сортировки данных в зависимости от условий.
Пример:
class SortStrategy:
def sort(self, data):
pass
class QuickSort(SortStrategy):
def sort(self, data):
return sorted(data) # упрощённо
class BubbleSort(SortStrategy):
def sort(self, data):
# реализация пузырьковой сортировки
for i in range(len(data)):
for j in range(len(data)-1-i):
if data[j] > data[j+1]:
data[j], data[j+1] = data[j+1], data[j]
return data
class Sorter:
def __init__(self, strategy: SortStrategy):
self._strategy = strategy
def sort(self, data):
return self._strategy.sort(data)
# Использование
sorter = Sorter(QuickSort())
print(sorter.sort([5, 3, 6, 2]))
sorter = Sorter(BubbleSort())
print(sorter.sort([5, 3, 6, 2]))
Такой подход позволяет менять алгоритм сортировки без изменения кода клиента.