Sobes.tech
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]))

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