Návrhové vzory
Podobně, jako si živočichové vytváří různé vzory chování minimalizující zbytečný výdej energie, tak i programátoři vystavení požadavkům trhu šetří svůj drahý čas používáním již známých a osvědčených řešení.
Každý programátor, který se zabývá objektově orientovaným programováním, s velkou pravděpodobností narazí na problém, který před ním vyřešil již někdo jiný. Čím obecněji byl tento problém a jeho řešení popsáno, tím větší je šance, že bude moci toto existující řešení programátor použít.
Začalo krystalizovat několik typických problémů a jejich řešení, která byla formálně popsána, časem i praxí ověřena a stala se de facto standardem. Nazývají se návrhové vzory (design patterns).
Návrhové vzory jsou standardizovaná řešení a struktury, které řeší často se opakující problémy v objektově orientovaném programování. Jejich hlavním účelem je zjednodušit a zkrátit vývoj, zvýšit srozumitelnost, přehlednost a znovupoužitelnost zdrojového kódu. Stručně řečeno, jejich znalost zabraňuje programátorovi ztrácet čas při „znovuobjevování kola“ (řešení již vyřešeného problému). Diskuze o tom, zda návrhové vzory též neubíjí kreativitu vývojářů, jsou však na místě.
Každý návrhový vzor zahrnuje název, popis problému i řešení a známé důsledky jeho použití na další části systému.
Přehled návrhových vzorů
Názvy všech návrhových vzorů jsou standardizovány v angličtině. U každého z nich je však uveden i neoficiální (orientační) překlad do češtiny.
Vytváření objektů
- Abstract Factory (abstraktní továrna)
- Builder (stavitel)
- Factory Method (tovární metoda)
- Prototype (prototyp)
- Singleton (jedináček)
Struktura
- Adapter (adaptér)
- Bridge (most)
- Composite (kompozice)
- Decorator (dekorátor)
- Facade (fasáda)
- Flyweight (muší váha)
- Proxy (proxy)
Chování
- Chain of Responsibility (řetězec odpovědnosti)
- Command (příkaz)
- Interpreter (tlumočník)
- Iterator (iterátor)
- Mediator (mediátor)
- Memento (memento)
- Observer (pozorovatel)
- State (stav)
- Strategy (strategie)
- Template Method (šablonová metoda)
- Visitor (návštěvník)
Reference
- Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns – Elements of Reusable Object-Oriented Software