Bc. Vojtěch Hordějčuk

„Dejte mi pevný bod a já pohnu Zemí.” - Archimedes

Domů » Wiki » Objektově orientované programování » Návrhové vzory

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