Junior — Middle
Pouvez-vous expliquer le principe de fonctionnement et les caractéristiques du pattern Stratégie en programmation orientée objet?
sobes.tech IA
Réponse de l'IA
Паттерн Стратегия позволяет определить семейство алгоритмов, инкапсулировать каждый из них и делать их взаимозаменяемыми. Это позволяет изменять поведение объекта во время выполнения, не меняя его кода.
Основная идея — вынести алгоритмы в отдельные классы, реализующие общий интерфейс, и в зависимости от ситуации использовать нужный класс.
Пример на Swift:
protocol SortingStrategy {
func sort(_ array: [Int]) -> [Int]
}
class BubbleSort: SortingStrategy {
func sort(_ array: [Int]) -> [Int] {
// реализация пузырьковой сортировки
return array // упрощённо
}
}
class QuickSort: SortingStrategy {
func sort(_ array: [Int]) -> [Int] {
// реализация быстрой сортировки
return array.sorted() // для примера
}
}
class Context {
private var strategy: SortingStrategy
init(strategy: SortingStrategy) {
self.strategy = strategy
}
func setStrategy(_ strategy: SortingStrategy) {
self.strategy = strategy
}
func sortArray(_ array: [Int]) -> [Int] {
return strategy.sort(array)
}
}
// Использование:
let context = Context(strategy: BubbleSort())
let sorted = context.sortArray([3, 1, 2])
context.setStrategy(QuickSort())
let sortedQuick = context.sortArray([3, 1, 2])
Такой подход улучшает расширяемость и поддерживаемость кода, позволяет менять поведение без изменения клиентского кода.