Vianoce v ITnetwork sú tu! Dobí si teraz kredity a získaj až 80 % extra kreditov na e-learningové kurzy ZADARMO. Zisti viac.
Hľadáme nové posily do ITnetwork tímu. Pozri sa na voľné pozície a pridaj sa k najagilnejšej firme na trhu - Viac informácií.

Strategy (stratégia)

Návrhový vzor stratégia umožňuje za behu vymeniť za behu aplikácie algoritmus za iný bez nutnosti zmeny kódu programu. Algoritmy sú prehľadne zabalené ako moduly.

Motivácia

V aplikáciách často používame naše algoritmy, môže sa jednať o spôsob výpočtu zľavy v internetovom obchode, spôsob výpočtu dane, spôsob uloženia dát, spôsob validácie dát a podobne. Algoritmov pre rovnakú vec môže byť viac a to z dôvodu kompatibility so staršími dátami alebo jednoducho preto, že algoritmus závisí od konkrétnej situácie.

Ak by sme chceli za behu vymeniť algoritmus, budeme musieť bez znalosti Strategy alebo podobného vzoru implementovať switch či podobné vetvenia. To môže byť s narastajúcim počtom algoritmov neprehľadné a každý nový algoritmus vyžaduje zásah do zdrojového kódu.

Občas by sme radi, aby bol algoritmus akýmsi zapuzdreným modulom, ktorý možno jednoducho vymeniť za iný, bez toho aby si toho klient všimol. So vzorom Strategy môžeme takúto zmenu urobiť dokonca aj za behu aplikácie.

Vzor

Strategy (stratégia) je tvorený abstraktné triedou Strategy, ktorá definuje rozhranie pre celú rodinu algoritmov, ktoré predstavujú konkrétne stratégie. Namiesto abstraktné triedy sa môže jednať aj o interface. Jednotlivé algoritmy z nej potom dedia a toto rozhranie implementujú svoju logikou.

Návrhový vzor Strategy / Stratégia - GOF - Vzory správania

Inštancia algoritmu je vložená do Kontextu často v konstruktoru, aby bol úplne odtienený od jej výberu.

Vzor Strategy je podobný, ako vzor Bridge, avšak je určený pre správanie, nie štruktúru.


 

Všetky články v sekcii
GOF - Vzory správania
Článok pre vás napísal David Hartinger
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
David je zakladatelem ITnetwork a programování se profesionálně věnuje 15 let. Má rád Nirvanu, nemovitosti a svobodu podnikání.
Unicorn university David sa informačné technológie naučil na Unicorn University - prestížnej súkromnej vysokej škole IT a ekonómie.
Aktivity