Návrhové vzory Java (design patterns): definícia a všetky typy

Čo je to návrhový vzor?

Návrhový vzor (design pattern) je vo všeobecnosti opakovateľným riešením bežne sa vyskytujúceho problému pri návrhu softvéru. Dizajnový vzor nie je hotový dizajn, ktorý je možné vziať a skopírovať ho do svojho do kódu. Vzor nie je konkrétny kus kódu, ale všeobecný koncept alebo šablóna na riešenie konkrétneho problému, ktorá sa dá použiť v mnohých rôznych situáciách. Dizajnové vzory môžu urýchliť proces vývoja aplikovaním testovaných a overených vývojových postupov.

Rozdelenie návrhových vzorov

Poznáme: vzory na vytváranie (Creational patterns), štrukturálne vzory (Structural patterns) a vzory správania (Behavioral patterns).

Vzory na vytváranie (Creational patterns)

Vzory z tejto kategórie sa zaoberajú vytváraním inštancií z tried.

  • Singleton – zabezpečí, že trieda bude mať iba jednu inštanciu a tú poskytne ako prístupový bod.
  • Builder – umožňuje rozloženie vytvárania komplexného objektu do série jednoduchých krokov.
  • Prototype – vytvorí inštanciu nového objektu naklonovaním existujúcej inštancie.
  • Factory – poskytuje rozhranie na vytváranie objektov odvodených tried.
  • Abstract factory – poskytuje rozhranie pre vytváranie rodín súvisiacich objektov bez špecifikovania ich konkrétnych tried.

Štrukturálne vzory (Structural patterns)

Vzory z tejto kategórie sa zaoberajú štruktúrou triedy ako je dedičnosť a kompozícia.

  • Adapter – umožňuje spoluprácu objektom s nekompatibilnými rozhraniami.
  • Bridge – oddeľuje abstrakciu od implementácie, aby sa obe časti mohli nezávisle na sebe meniť.
  • Composite – umožňuje zakomponovať objekty do stromových štruktúr a pracovať s nimi ako s individuálnymi objektami.
  • Decorator – používa sa na dynamické pridávanie (a odstraňovanie) nových zodpovedností alebo funkcií existujúcim objektom bez ovplyvnenia správania iných objektov z rovnakej triedy.
  • Facade – poskytuje zjednodušené rozhranie inak komplexnému systému.
  • Flyweight – umožňuje zdieľať častí už existujúcich objektov za účelom zníženia počtu vytvorených objektov.
  • Proxy – poskytuje možnosť nahradiť pôvodný objekt iným objektom, cez ktorý sa riadi prístup k pôvodnému objektu.

Vzory správania (Behavioral patterns)

Vzory z tejto kategórie sa zaoberajú komunikáciou medzi objektami.

  • Chain of responsibility – ponúka spôsob odovzdávania požiadavky medzi reťazou objektov, kde aktuálne oslovený objekt ju má možnosť spracovať alebo poslať ďalšiemu v reťazi.
  • Command – implementuje requestresponse model zabalením príkazu a jeho metadát do objektu.
  • Iterator – umožňuje prechádzanie prvkami kolekcie bez odhalenia jej základného typu.
  • Mediator – poskytuje centralizovanú komunikáciu medzi rôznymi objektami v systéme.
  • Memento – umožňuje uložiť a následne obnoviť predchádzajúci stav objektu.
  • Observer – ponúka mechanizmus notifikácií všetkých zainteresovaných objektov, ak nastane na pozorovanom objekte zmena.
  • State – umožňuje objektu zmeniť svoje správanie, ak sa zmení jeho vnútorný stav.
  • Strategy – poskytuje možnosť zadefinovania rodiny algoritmov, každý v samostatnej triede a zabezpečí ich zameniteľnosť.

O autorovi

Jozef Wagner

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Daj nám o sebe vedieť