Sobes.tech
Junior — Middle

W jaki sposób wzorzec Proxy działa jako pośrednik dla oryginalnego obiektu?

sobes.tech AI

Odpowiedź od AI

Wzorzec Proxy w Java działa jako pośrednik między klientem a oryginalnym obiektem. Proxy kontroluje dostęp do tego obiektu, może dodawać dodatkową logikę przed lub po wywołaniu metod oryginału, taką jak buforowanie, sprawdzanie uprawnień, leniwa inicjalizacja lub logowanie.

W ten sposób klient wchodzi w interakcję z Proxy tak samo jak z oryginalnym obiektem, ale Proxy zarządza wywołaniami i może zmieniać zachowanie bez modyfikacji samego oryginalnego obiektu.

Przykład:

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

    public void display() {
        System.out.println("Wyświetlanie " + 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); // leniwa inicjalizacja
        }
        realImage.display();
    }
}

// Użycie:
Image image = new ProxyImage("photo.jpg");
image.display(); // ładowanie i wyświetlanie
image.display(); // tylko wyświetlanie, bez ponownego ładowania

W tym przykładzie Proxy kontroluje tworzenie i dostęp do rzeczywistego obiektu, optymalizując zarządzanie zasobami.