Sobes.tech
Junior — Middle

Môžete vysvetliť hlavné rozdiely medzi vzormi Adapter, Facade a Proxy a v akých situáciách je ich najlepšie použiť?

sobes.tech AI

Odpoveď od AI

Hlavné rozdiely medzi vzormi Adapter, Facade a Proxy:

  • Adapter (Adaptér): Umožňuje objektom s nekompatibilnými rozhraniami spolupracovať. Konvertuje rozhranie jednej triedy na rozhranie, ktoré očakáva klient.

    • Používa sa, keď je potrebné integrovať existujúcu triedu s novým rozhraním.
  • Facade (Fasáda): Poskytuje zjednodušené rozhranie k zloženému pod systému, skrýva jeho vnútornú zložitosť.

    • Používa sa na zjednodušenie interakcie s veľkým počtom tried.
  • Proxy (Proxy): Kontroluje prístup k inému objektu, môže pridávať ďalšiu logiku (napríklad, lenivé načítanie, caching, bezpečnosť).

    • Používa sa, keď je potrebné riadiť prístup alebo pridať správanie bez zmeny pôvodného objektu.

Príklady situácií:

  • Adapter: integrácia starého API s novým rozhraním.
  • Facade: poskytovanie jednoduchého API pre zložitú knižnicu.
  • Proxy: implementácia odloženého načítania zdroja alebo kontroly prístupu.

Príklad Adapter v Jave:

interface Cieľ {
    void požiadavka();
}

class Adaptér {
    void špecifickáPožiadavka() { System.out.println("Špecifická požiadavka"); }
}

class Adapter implements Cieľ {
    private Adaptér adaptér = new Adaptér();
    public void požiadavka() {
        adaptér.špecifickáPožiadavka();
    }
}