Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Lekce 13 - Strategy (strategie)

V dnešním tutoriálu Návrhové vzory GoF si představíme návrhový vzor Strategy, který umožňuje za běhu aplikace vyměnit algoritmus za jiný bez nutnosti změny kódu programu. Algoritmy jsou přehledně zabalené jako moduly. Jde o další návrhový vzor chování skupiny GoF.

Motivace použití vzoru Strategy

V aplikacích často používáme algoritmy například pro:

  • výpočet slevy v internetovém obchodě,
  • výpočet daně,
  • uložení dat,
  • validaci dat a podobně.

Algoritmů pro stejnou věc může být více. A to z důvodu kompatibility se staršími daty nebo jednoduše proto, že algoritmus závisí na konkrétní situaci.

Pokud bychom chtěli za běhu vyměnit algoritmus, budeme muset bez znalosti Strategy nebo podobného vzoru implementovat switch či podobné větvení. To může být s narůstajícím počtem algoritmů nepřehledné a každý nový algoritmus vyžaduje zásah do zdrojového kódu. Občas bychom rádi, aby byl algoritmus jakýmsi zapouzdřeným modulem. Ten by šel jednoduše vyměnit za jiný, aniž by si toho klient všiml. Se vzorem Strategy můžeme takovou změnu udělat dokonce i za běhu aplikace.

Specifikace vzoru Strategy

Vzor Strategy (strategie) je tvořen abstraktní třídou Strategy, která definuje rozhraní pro celou rodinu algoritmů. Ty představují konkrétní strategie. Namísto abstraktní třídy se může jednat i o rozhraní. Jednotlivé algoritmy z ní poté dědí a toto rozhraní implementují svou logikou. Zde je UML diagram:

Návrhový vzor Strategy/Strategie - Návrhové vzory GoF

Instance algoritmu je vložena do instance třídy Kontext často v konstruktoru, aby byl úplně odstíněn od jejího výběru.

Vzor Strategy je podobný vzoru Bridge, nicméně je určený pro chování, nikoli strukturu.

V další lekci, Template Method (šablonová metoda), si ukážeme návrhový vzor chování Template Method, který definuje kostru algoritmu. Potomci poté kroky implementují.


 

Předchozí článek
Kvíz - Flyweight, Composite, Bridge, Observer ve Vzory GOF
Všechny články v sekci
Návrhové vzory GoF
Přeskočit článek
(nedoporučujeme)
Template Method (šablonová metoda)
Článek pro vás napsal David Hartinger
Avatar
Uživatelské hodnocení:
24 hlasů
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 se informační technologie naučil na Unicorn University - prestižní soukromé vysoké škole IT a ekonomie.
Aktivity