Sobes.tech
Junior — Middle

Hogyan működik a Proxy minta közvetítőként az eredeti objektum számára?

sobes.tech MI

Válasz az MI-től

A Proxy minta Java-ban közvetítőként működik a kliens és az eredeti objektum között. A Proxy ellenőrzi az hozzáférést ehhez az objektumhoz, további logikát adhat hozzá az eredeti metódusok hívása előtt vagy után, például gyorsítótárazás, hozzáférési jogok ellenőrzése, késleltetett inicializálás vagy naplózás.

Így a kliens a Proxy-val ugyanúgy lép kapcsolatba, mint az eredeti objektummal, de a Proxy kezeli a hívásokat, és módosíthatja a viselkedést anélkül, hogy az eredeti objektumot megváltoztatná.

Példa:

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("Betöltés " + filename);
    }

    public void display() {
        System.out.println("Képernyőre vetítés " + 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); // késleltetett létrehozás
        }
        realImage.display();
    }
}

// Használat:
Image image = new ProxyImage("foto.jpg");
image.display(); // betöltés és megjelenítés
image.display(); // csak megjelenítés, újra betöltés nélkül

Ebben a példában a Proxy ellenőrzi a valódi objektum létrehozását és hozzáférését, optimalizálva az erőforrások felhasználását.