Štítek: OOP
Návrhové vzory
- Představují obecné řešení problémů
- Není knihovnou nebo částí zdrojového kódu
- Je popis řešení problému nebo šablona, která může být použita v různých situacích
- Objektově orientované návrhové vzory ukazují vztahy a interakce mezi třídami a objekty aniž by určovali implementaci konkrétní třídy
- Algoritmy nejsou návrhové vzory, protože řeší konkrétní problémy, nikoliv problémy návrhu
- Vycházejí z praxe
- Hlavní předností je hotové katalogizované řešení
- Popis návrhového vzoru dává veškeré potřebné informace, výhody, nevýhody
Tematické okruhy
- Objektové návrhové vzory – určeny pro analytiky, designery a programátory
- Architektonické vzory – vzory situací při mapování analytických modelů do designu
- Interakční vzory – vhodné pro analytiky, designery middlewaru
- Analytické vzory – vzory pro návrh rozsáhlých informačních systémů
- Vzory pro aplikace v reálném čase – vhodné pro návrháře speciálních IS pracujících v reálném čase
- Vzory pro servisně orientovanou architekturu
- BPM vzory
Výhody použití
- Ulehčení práce
- Snížení počtu chyb
- Snadnější rozšiřování programů
- Dodržení principů OOP
- Lepší komunikace skupin
Struktura
- Zde můžeme užít definici tvůrce návrhových vzorů: Každý popisovaný návrhový vzor musí být formulován ve formě pravidel, které stanovují vztah mezi kontextem, silami působících v tomto kontextu a konfigurací, která dovoluje těmto silám vyřešit vlastní působení v rámci kontextu.
- Název, stručné představení, účel
- Demonstrační příklad
- Obecná struktura s vnitřními vztahy objektů
- Popis implementace, konkrétní příklad
- Známá použití, vztahy s ostatními vzory
Objektové návrhové vzory
- Každý vzor popisuje množinu vzájemně souvisejících objektů a tříd
- Hlavním důvodem pro jejich používání je jejich znuvupoužitelnost
- Kategorie: tvořivé, strukturální, zrychlování
- Tvůrčí vzory jsou součástí procesu vytváření objektů
- Strukturální vzory se zabývají skládáním objektů a tříd
- Zrychlování určují jak třídy nebo objekty vzájemně reagují a jak jsou rozděleny jejich odpovědnosti
- V GoF máme 23 základních vzorů, které jsou rozděleny do 3 skupin
Dělení vzorů
- V praxi dělíme návrhové vzory dle oblasti, do které spadají

Seznam vzorů dle GoF

Kategorie návrhových vzorů

Vztahy mezi vzory

Vytvářecí vzory
- Facotory Metod – odvozuje třídy od třídy vytvářející objekty
- Abstract Factory – vytváří objekty více souvisejících tříd
- Builder – vytváří složený objekt postupně pomocí protokolu
- Prototype – objekty se vytvářejí kopírováním od prototypových objektů
- Singelton – třída, která vytváří pouze jednu jedinou instanci
Strukturální vzory
- Adapter – přizpůsobení rozhraní třídy jiným rozhraním
- Composite – hierarchie tříd tvořená dvěma druhy objektů
- Proxy – zástupce jiného objektu
- Flyweight – struktura pro efektivní sdílení velkého množství objektů
- Facade – jednotné rozhraní pro celý systém
- Bridge – oddělení rozhraní od implementace
- Decorator – dynamické přidání funkčnosti objektům
Vzory chování
- Template Method – abstraktní definice algoritmu po jednotlivých krocích
- Interpreter – reprezentace gramatiky jako hierarchie tříd
- Mediator – odstraňuje nutnost referencí spolupracující objekty
- Chain of Responsibility – zasílání zpráv pomocí zřetězených objektů
- Observer – definování závislosti objektu k dalším objektům
- Strategy – flexibilní zapouzdření algoritmu do objektu
- Command – zapouzdření požadavku na funkci
- State – zapouzdření stavu, možnost změny chování v objektu
- Visitor – zapouzdření chování
- Iterator – procházení agregovaných objektů
Vzory v praxi
Jedináček (singelton)
- Je určen pro tvorbu objektů a případná změna chování je dosahována změnou instance objektu
- Vzor se skládá jen z třídy jedináčka
- Třída implementující vzor zapouzdřuje přístup ke sdílené instanci a je zodpovědná za její vytvoření
- Klient k instanci přistupuje pomocí přístupového budu
- Vzor užijeme tam, kde je požadován jediný výskyt instance v rámci aplikace nebo systému
- Implementace vzoru je závislá na zvolené technologii








