Návrhový vzor

Vzhled přesunout do postranního panelu skrýt

Návrhový vzor (anglicky design pattern) v softwarovém inženýrství představuje obecné řešení problému, které se využívá při návrhu počítačových programů. Návrhový vzor není knihovnou nebo částí zdrojového kódu, která by se dala přímo vložit do našeho programu, jedná se o popis řešení problému nebo šablonu, která může být použita v různých situacích. Objektově orientované návrhové vzory typicky ukazují vztahy a interakce mezi třídami a objekty, aniž by určovaly implementaci konkrétní třídy. Algoritmy nejsou považovány za návrhové vzory, protože řeší konkrétní problémy a nikoliv problémy návrhu.

Návrhové vzory nepocházejí ze softwarového inženýrství – jsou zcela běžné v každodenním životě. K asi nejznámějším a nejstarším příkladům patří architektura. Gotickou katedrálu je možné poznat už zdaleka právě proto, že tehdejší architekti a jejich stavební společnosti používali stejné návrhové vzory.

Historie

Vznik návrhových vzorů se datuje do šedesátých let dvacátého století, kdy pro vzory v architektuře použil tento termín Christopher Alexander s kolegy. Šlo o odpověď na různé moderní styly v architektuře, které ale byly nepraktické. V počítačových vědách se návrhové vzory prvně objevují na konferenci OOPSLA v roce 1987 v Orlandu, kde je použili pánové Ward Cunningham a Kent Beck, kteří vycházeli z několika návrhových vzorů připravených v jazyce Smalltalk. Tyto vzory byly určeny hlavně pro začátečníky v tomto programovacím jazyce.

Další důležitou věcí pro návrhové vzory bylo vytvoření skupiny GoF (Gang of Four) na začátku devadesátých let. Tuto skupinu tvořili Erich Gamma, Richard Helm, Ralph Johnson a John Vlissides. V roce 1991 na konferenci ECOOP představili prvních pár návrhových vzorů (Composite, Decider, Observer atd.).

V říjnu roku 1993 se uskutečnilo v horách nedaleko Colorada setkání, kde byly položeny základy pozdější Hillside group. Tato skupina je nevýdělečnou organizací kladoucí si za cíl zlepšit vývoj softwarových systémů. Je sponzorem konference PloP (Pattern Languages of Programming) a dalších podobných konferencí.

Nicméně základním kamenem pro návrhové vzory se stala kniha Design Patterns: Elements of Reusable Object-Oriented Software, jejímiž autory jsou Erich Gamma, Richard Helm, Ralph Johnson a John Vlissides také známí jako Gang of Four. V oblasti návrhových vzorů je nazývána knihou knih a i dnes je stále aktuální.

Mezi další důležité knihy týkající se návrhových vzoru patří:

Základní typy

Creational Patterns (vytvářející)

Creational Patterns řeší problémy související s vytvářením objektů v systému. Snahou těchto návrhových vzorů je popsat postup výběru třídy nového objektu a zajištění správného počtu těchto objektů. Většinou se jedná o dynamická rozhodnutí učiněná za běhu programu.

Structural Patterns (strukturální)

Structural Patterns představují skupinu návrhových vzorů zaměřujících se na možnosti uspořádání jednotlivých tříd nebo komponent v systému. Snahou je zpřehlednit systém a využít možností strukturalizace kódu.

Behavioral Patterns (chování)

Behavioral Patterns se zajímají o chování systému. Mohou být založeny na třídách nebo objektech. U tříd využívají při návrhu řešení především principu dědičnosti. V druhém přístupu je řešena spolupráce mezi objekty a skupinami objektů, která zajišťuje dosažení požadovaného výsledku.

Doporučená struktura záznamu v archivu návrhových vzorů

Přehled návrhových vzorů

Creational patterns (Vzory týkající se tvorby objektů)

Structural Patterns (Vzory týkající se struktury programu)

Behavioral Patterns (Vzory týkající se chování)

Concurrent patterns (Vzory řešící problémy vzniklé spouštěním programů ve vláknech a tudíž při souběžném řešení úlohy)

Tento vzor může být nebezpečný, pokud je implementován v některých kombinacích programovacích jazyků a hardwaru. Proto je někdy považován také za proti-vzor.

Literatura

Externí odkazy