Sobes.tech
Junior — Middle

In che modo il pattern Proxy funge da intermediario per l'oggetto originale?

sobes.tech AI

Risposta dell'AI

Il pattern Proxy in Java funge da intermediario tra il client e l'oggetto originale. Il Proxy controlla l'accesso a quest'ultimo, può aggiungere logica aggiuntiva prima o dopo la chiamata ai metodi dell'originale, come caching, verifica dei permessi, inizializzazione pigra o logging.

In questo modo, il client interagisce con il Proxy come se fosse l'oggetto originale, ma il Proxy gestisce le chiamate e può modificare il comportamento senza cambiare l'oggetto originale.

Esempio:

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

    public void display() {
        System.out.println("Visualizzazione di " + 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); // creazione pigra
        }
        realImage.display();
    }
}

// Uso:
Image image = new ProxyImage("foto.jpg");
image.display(); // caricamento e visualizzazione
image.display(); // solo visualizzazione, nessun caricamento ripetuto

In questo esempio, il Proxy controlla la creazione e l'accesso all'oggetto reale, ottimizzando l'uso delle risorse.