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