Procházet otázky :: SZZ na MFF UK

#

- Hlavní strana
- Okruhy
- Projít
- Stáhnout
- Co je potřeba
- Chci přispět
- Kredity

Hledat:

## Prohlížení státnicových textů

## Návrhové vzory

Návrhový vzor je pojmenované a popsané řešení typického problému. Princip existují už dlouho: v architektuře - např. barokní styl, literatura - tragický hrdina, romantická novela...

V software se mnohé postupy vynalézají stále znovu - návrhové vzory mají potom pro typickou situaci popisovat:

- jak a kdy mají být objekty vytvářeny
- jaké vztahy a struktury mají obsahovat třídy
- jaké chování mají mít třídy, jak mají spolupracovat objekty

Návrhový vzor (design pattern) je tedy obecně znovupoužitelné řešení problémů často se vyskytujících při návrhu softwaru. Nejedná se o hotový design, který by se dal transformovat přímo na kód - je to víceméně jen popis nebo šablona, jak řešit nějaký problém vyskytující se ve více různých situacích. Objektově-orientované návrhové vzory typicky ukazují vztahy a interakce mezi třídami nebo objekty - bez specifikace konkrétních konečných tříd nebo objektů. Algoritmy nejsou považovány za návrhové vzory, protože řeší spíše výpočetní problémy než designové.

Ne všechny softwarové vzory (software patterns) jsou návrhové. Návrhové vzory řeší problémy na úrovni návrhu softwaru (software desing). Jiné druhy vzorů (jako např. architekturální vzory (architectural patterns)) popisují problémy a řešení, které se zaměřují na jiné úrovně.

Základní prvky návrhových vzorů:

- Název - co nejvíce vystihující podstatu, usnadnění komunikace - společný slovník
- Problém - obecná situace kterou má NV řešit
- Podmínky - popis okolností ovlivňujících použití NV a kontextu vhodném pro použití; některé okolnosti mohou být využity při řešení, jiné naopak jsou v konfliktu
- Řešení - soubor pravidel a vztahů popisujících jak dosáhnout řešení problému; nejen statická struktura, ale i dynamika chování
- Souvislosti a důsledky - detailní vysvětlení použití, implementace a principu fungování; způsob práce s NV v praxi
- Příklady - definice konkrétního problému, vstupní podmínky, popis implementace a výsledek
- Související vzory - použití jednoho NV nepředstavuje typicky ucelené řešení - řetězec NV

Příklady

Creational patterns:

- Factory method (zajišťuje rozhodnutí o typu vytvářeného objektu při polymorfismu)
- Prototype (jak klonovat objekty)
- Singleton (jak omezit objekt jen na 1 instanci)

Structural patterns:

- Adapter (konverze rozhraní objektů)
- Bridge (oddělení rozhraní a implementace třídy)
- Composite (jak složit více objektů do jednoho s jednotným přístupem)
- Proxy (jak zajistit přístup k jinému objektu přes můj objekt)
- Decorator (jak změnit vlastnosti třídy nebo zajistit rozšířenou funkčnost bez odděďování)

Behavioral patterns:

- Chain of responsibility (jak určit kdo vykoná akci, když z venku přijde požadavek)
- Command (odstínění klienta od zpracování požadavku - klient neurčuje kdy a jak se to provede)
- Iterator (projití prvků pole bez znalosti jejich implementace)
- Visitor (navštívení všech objektů nějaké struktury a práce s nimi, aby všechny nemusely implementovat stejné metody (a měnit se při jejich změně))
- Template (jak mohou odvozené třídy ovlivňovat algoritmy bázové třídy)

TODO: rozšíriť, doplniť, opraviť :-)