Vzory zástupcu, dekoratéra, adaptéra a mostíka

1. Úvod

V tomto článku sa zameriame na Štrukturálne návrhové vzory v Jave - a prediskutujeme, čo to je, a niektoré zásadné rozdiely medzi niektorými z nich.

2. Štrukturálne návrhové vzory

Podľa Gang of Four (GoF) možno návrhové vzory rozdeliť do troch typov:

  1. Tvorivý
  2. Štrukturálne
  3. Behaviorálne

Jednoducho povedané, štruktúrne vzory sa zaoberajú skladbou tried a objektov. Poskytujú rôzne spôsoby použitia objektovej kompozície a dedičnosti na vytvorenie určitej abstrakcie.

3. Proxy vzor

S týmto vzorom vytvoríme sprostredkovateľa, ktorý funguje ako rozhranie k inému prostriedku, napr. súbor, pripojenie. Tento sekundárny prístup poskytuje náhradu za skutočný komponent a chráni ho pred zložitosťou, ktorá je na ňom založená.

Podrobný príklad vzoru nájdete v samostatnom príspevku: The Proxy Pattern in Java.

Kľúčové body diferenciácie:

  • Proxy server poskytuje rovnaké rozhranie ako objekt, na ktorý drží referenciu, a nijako nemení údaje; je to na rozdiel od vzorov adaptéra a dekoratéra, ktoré menia a zdobia funkcie už existujúcich inštancií
  • Proxy má zvyčajne informácie o skutočnom subjekte v čase samotného kompilácie, zatiaľ čo dekorátor a adaptér sa injektujú za behu, pričom poznajú iba rozhranie skutočného objektu.

4. Vzor dekoratéra

Tento vzor je užitočný na zlepšenie správania objektu. Podrobný prehľad nájdete v zameranom výučbe tu: Decorator Pattern in Java

Kľúčové body diferenciácie:

  • Aj keď majú vzory proxy a dekoratéra podobné štruktúry, líšia sa zámerom; zatiaľ čo hlavným účelom Proxy je uľahčiť jednoduché použitie alebo kontrolovaný prístup, dekoratér pripája ďalšie zodpovednosti
  • Vzory servera Proxy aj adaptéra obsahujú odkaz na pôvodný objekt
  • Všetky dekorátory z tohto vzoru je možné použiť rekurzívne, nekonečne veľa krát, čo u iných modelov nie je možné.

5. Vzor adaptéra

Vzor adaptéra sa používa na pripojenie dvoch nekompatibilných rozhraní, ktoré sa inak nedajú pripojiť priamo. Adaptér zabalí existujúcu triedu do nového rozhrania, aby sa stala kompatibilnou s potrebným rozhraním.

Podrobný popis a implementáciu nájdete v samostatnom príspevku: Adapter Pattern in Java

Hlavné rozdiely medzi vzormi Adapter a Proxy sú:

  • Zatiaľ čo server proxy poskytuje rovnaké rozhranie, adaptér poskytuje iné rozhranie, ktoré je kompatibilné s jeho klientom
  • Vzor adaptéra sa použije po navrhnutí komponentov aplikácie tak, aby sme ich mohli používať bez úpravy zdrojového kódu. To je v kontraste so vzorom Bridge, ktorý sa používa pred navrhnutím komponentov.

6. Mostový vzor

Mostový vzor sa používa na oddelenie abstrakcie od jej implementácie aby sa títo dvaja mohli nezávisle meniť.

To znamená vytvoriť prepojovacie rozhranie, ktoré pomocou princípov OOP rozdeľuje zodpovednosti do rôznych abstraktných tried.

Podrobný popis a implementáciu nájdete v samostatnom príspevku: Bridge Pattern in Java

Kľúčové body diferenciácie:

  • Mostový vzor je možné implementovať iba pred navrhnutím aplikácie.
  • Umožňuje nezávisle meniť abstrakciu a implementáciu, zatiaľ čo vzor adaptéra umožňuje nekompatibilným triedam spolupracovať

7. Záver

V tomto článku sme sa zamerali na Štrukturálny návrhový vzor a rozdiely medzi niektorými jeho typmi.

Úplnú implementáciu tohto tutoriálu nájdete ako vždy na serveri Github.


$config[zx-auto] not found$config[zx-overlay] not found