Strategy (strategie)
Návrh Návrhové vzory GOF Vzory chování Strategy (strategie)


Návrhový vzor strategie umožňuje za běhu vyměnit za běhu aplikace algoritmus za jiný bez nutnosti změny kódu programu. Algoritmy jsou přehledně zabalené jako moduly.
Motivace
V aplikacích často používáme naše algoritmy, může se jednat o způsob výpočtu slevy v internetovém obchodě, způsob výpočtu daně, způsob uložení dat, způsob validace 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, který lze 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.
Vzor
Strategy (strategie) je tvořen abstraktní třídou Strategy
,
která definuje rozhraní pro celou rodinu algoritmů, které představují
konkrétní strategie. Namísto abstraktní třídy se může jednat i o
interface. Jednotlivé algoritmy z ni poté dědí a toto rozhraní
implementují svou logikou.

Instance algoritmu je vložena do Kontextu
často v
konstruktoru, aby byl úplně odstíněn od jejího výběru.
Vzor Strategy je podobný, jako vzor Bridge, nicméně je určený pro chování, nikoli strukturu.
Komentáře


Zobrazeno 7 zpráv z 7.