Sobes.tech
Junior — Middle

Kuidas toimib Proxy muster originaalse objekti vahendajana?

sobes.tech AI

Vastus AI-lt

Java-s Proxy musterib toimib vahendajana klienti ja algse objekti vahel. Proxy kontrollib sellele objekti juurdepääsu, võib lisada täiendavat loogikat enne või pärast algse meetodi kutsumist, näiteks vahemälu, juurdepääsu kontrolli, laiska initsialiseerimise või logimise.

Seega suhtleb klient Proxy-ga sama moodi nagu algse objektiga, kuid Proxy haldab kõnesid ja võib muuta käitumist ilma ise algset objekti muutmata.

Näide:

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("Laadimine " + filename);
    }

    public void display() {
        System.out.println("Kuvamine " + 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); // laisk loomine
        }
        realImage.display();
    }
}

// Kasutamine:
Image image = new ProxyImage("photo.jpg");
image.display(); // laadimine ja kuvamine
image.display(); // ainult kuvamine, uuesti laadimine ei toimu

Selles näites kontrollib Proxy reaalse objekti loomist ja juurdepääsu, optimeerides ressursside kasutamist.