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();
}
}