Junior — Middle
Môžete vysvetliť princíp fungovania a vlastnosti vzoru Stratégia v objektovo orientovanom programovaní?
sobes.tech AI
Odpoveď od AI
Vzor Stratégia umožňuje definovať rodinu algoritmov, každý z nich zabalí a umožní ich výmenu. To umožňuje meniť správanie objektu počas behu, bez zmeny jeho kódu.
Hlavná myšlienka je oddeliť algoritmy do samostatných tried, ktoré implementujú spoločné rozhranie, a podľa situácie použiť správnu triedu.
Príklad v Swift:
protocol SortingStrategy {
func sort(_ array: [Int]) -> [Int]
}
class BubbleSort: SortingStrategy {
func sort(_ array: [Int]) -> [Int] {
// implementácia bublinkového triedenia
return array // zjednodušené
}
}
class QuickSort: SortingStrategy {
func sort(_ array: [Int]) -> [Int] {
// implementácia rýchleho triedenia
return array.sorted() // ako príklad
}
}
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)
}
}
// Použitie:
let context = Context(strategy: BubbleSort())
let sorted = context.sortArray([3, 1, 2])
context.setStrategy(QuickSort())
let sortedQuick = context.sortArray([3, 1, 2])
Tento prístup zlepšuje rozšíriteľnosť a udržiavateľnosť kódu, umožňuje meniť správanie bez zmeny kódu klienta.