Sobes.tech
Junior — Middle

De que forma o padrão Proxy atua como intermediário para o objeto original?

sobes.tech IA

Resposta da IA

O padrão Proxy em Java atua como um intermediário entre o cliente e o objeto original. O Proxy controla o acesso a esse objeto, podendo adicionar lógica adicional antes ou depois de chamar os métodos do original, como cache, verificação de permissões, inicialização preguiçosa ou registo.

Assim, o cliente interage com o Proxy da mesma forma que com o objeto original, mas o Proxy gere as chamadas e pode alterar o comportamento sem modificar o objeto original.

Exemplo:

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

    public void display() {
        System.out.println("A mostrar " + 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); // criação preguiçosa
        }
        realImage.display();
    }
}

// Uso:
Image image = new ProxyImage("foto.jpg");
image.display(); // carregamento e exibição
image.display(); // apenas exibição, sem recarregar

Neste exemplo, o Proxy controla a criação e o acesso ao objeto real, otimizando o uso de recursos.