Sobes.tech
Junior — Middle

Aký je účel vzoru Proxy pri vývoji softvérových riešení?

sobes.tech AI

Odpoveď od AI

Vzor Proxy sa využíva na vytvorenie náhradníka (zástupcu) iného objektu, ktorý kontroluje prístup k tomuto objektu. To umožňuje:

  • Odložiť vytvorenie náročného objektu (lenivá inicializácia).
  • Kontrolovať prístup (napríklad, overenie práv).
  • Logovať volania.
  • Cacheovať výsledky.

V Jave sa Proxy často implementuje cez rozhrania alebo dynamické proxy.

Príklad: ak máte objekt, ktorý načítava dáta zo siete, Proxy môže najskôr skontrolovať cache a vrátiť dáta odtiaľ, bez kontaktu so sieťou.

interface Image {
    void display();
}

class RealImage implements Image {
    private String filename;
    public RealImage(String filename) {
        this.filename = filename;
        loadFromDisk();
    }
    private void loadFromDisk() {
        System.out.println("Načítavanie " + filename);
    }
    public void display() {
        System.out.println("Zobrazovanie " + filename);
    }
}

class ProxyImage implements Image {
    private RealImage realImage;
    private String filename;
    public ProxyImage(String filename) {
        this.filename = filename;
    }
    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename); // lazy načítanie
        }
        realImage.display();
    }
}

Tu ProxyImage kontroluje vytvorenie RealImage a môže optimalizovať jeho použitie.