Vzory používané během návrhu:
Třívrstvá architektura rozděluje aplikaci do tří logicky a fyzicky oddělitelných vrstev. Jde o jeden z nejběžnějších přístupů pro distribuované systémy.
Účel
Vrstvy
Druhy třívrstvé architektury
Výhody
Vzor řešící problém prezentační vrstvy.
Založený na oddělení logiky od GUI.
Třívrstvá architektura.
Organizace kódu v rámci jedné aplikace, nejčastěji v prezentační vrstvě třívrstvé architektury.
Umožňuje paralelní vývoj a modifikaci jednotlivých částí.
Model
View
Controller
Zajišťuje, že třída má pouze jednu instanci a poskytuje globální přístupový bod k ní (např. pro databázové připojení, konfiguraci).
Často diskutovaný, někdy považován za anti-pattern kvůli problémům s testovatelností a globálním stavem.
Princip: Skryjeme konstruktor (private) a vytvoříme statickou metodu (getInstance()), která vrátí existující instanci, nebo ji při prvním zavolání vytvoří.
new KonkretniTrida() se volá abstraktní metoda vyrob(). Tu si přepíší potomci podle sebe.if/else nebo switch konstrukcí). Vzor zapouzdřuje chování spojené s konkrétním stavem do samostatné třídy.Objednávka může mít stavy jako Nová, Zpracovává se, Odeslaná, Zrušená. Pro každý stav existuje samostatná třída (StavNova, StavOdeslana), která implementuje metody jako odeslat() nebo zrusit(). Metoda odeslat() v Objednávce pouze deleguje volání na svůj aktuální stavový objekt.Definuje závislost jedna-k-mnoha mezi objekty tak, že když jeden objekt změní stav, všichni jeho závislí (pozorovatelé) jsou automaticky upozorněni a aktualizováni.
Řeší "polling", tedy aby se všechny ostatní objekty nemusely neustále ptát "už se to změnilo?"
Pozorující objekty se zaregistrují u pozorovaného objektu
Pozorující objekt musí implementovat požadované rozhraní
Při změně upozorní pozorovaný objekt všechny pozorující pomocí tohoto rozhraní
GRASP = General Responsibility Assignment Software Patterns
Jsou to spíše principy nebo heuristiky, které pomáhají přiřazovat zodpovědnosti jednotlivým objektům v objektově orientovaném návrhu.
Zodpovědnost je úkol, který má třída řešit
Typy
Základní princip přiřazení zodpovědnosti
Přiřaďte zodpovědnost třídě, která má informace potřebné pro splnění této zodpovědnosti
Příklad:
Objednavka, protože zná všechny své položky (PolozkaObjednavky) a jejich počet.VypocetCenyManager.Provázanost (Coupling) = měřítko toho, jak moc je jedna třída závislá na jiné. Cílem je minimalizovat závislosti mezi třídami.
Přiřazujte zodpovědnosti tak, aby provázanost (závislost jedné třídy na druhé) zůstala co nejnižší.
Důsledek:
Příklad:
MySQLDatabase, ale na obecném rozhraní IDatabase.Soudržnost (Cohesion) = míra, do jaké spolu zodpovědnosti jedné třídy souvisejí
Přiřazujte zodpovědnosti tak, aby soudržnost zůstala vysoká.
Důsledek:
Příklad:
Zakaznik by měla obsahovat jen data a metody týkající se zákazníka (jméno, adresa, historie objednávek).| Aspekt | GRASP | GoF |
|---|---|---|
| Typ | Principy, heuristiky, myšlenkové postupy | Katalog konkrétních, osvědčených řešení |
| Účel | Pomáhají přiradit zodpovědnosti a zdůvodnit návrhová rozhodnutí | Poskytují hotové šablony pro řešení často se vyskytujících problémů |
| Abstrakce | Vyšší (obecné rady) | Nižší (konkrétní diagramy a implementace) |
Ukázka vypůjčení výtisku
<< create >><< destroy >>i, (modrý) obdélník iterovaných objektů třídy (další sloupec)Vytvořeno: 20. 6. 2026, 13:15
Poslední aktualizace: 20. 6. 2026, 14:28