Sobes.tech
Junior — Middle

Как работи патърнът Proxy като посредник за оригиналния обект?

sobes.tech AI

Отговор от AI

Моделът Proxy в Java действа като посредник между клиента и оригиналния обект. Proxy контролира достъпа до този обект, може да добавя допълнителна логика преди или след извикването на методите на оригинала, като кеширане, проверка на права за достъп, лениво инициализиране или логване.

По този начин клиентът взаимодейства с Proxy по същия начин, както с оригиналния обект, но Proxy управлява извикванията и може да променя поведението без да променя самия оригинален обект.

Пример:

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("Зареждане " + filename);
    }

    public void display() {
        System.out.println("Показване " + 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); // лениво създаване
        }
        realImage.display();
    }
}

// Използване:
Image image = new ProxyImage("photo.jpg");
image.display(); // зареждане и показване
image.display(); // само показване, без повторно зареждане

В този пример Proxy контролира създаването и достъпа до реалния обект, оптимизирайки работата с ресурсите.