Sobes.tech
Назад к вопросам
Junior — Middle
58

Можешь привести пример использования паттерна Proxy в программировании?

Ответ от нейросети

sobes.tech AI

Паттерн Proxy используется для создания заместителя (прокси) объекта, который контролирует доступ к реальному объекту. Это может быть полезно для ленивой инициализации, контроля доступа, логирования, кэширования и т.д.

Пример использования паттерна Proxy на Java — прокси для контроля доступа к ресурсу:

// Интерфейс общего объекта
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("Loading " + filename);
    }

    @Override
    public void display() {
        System.out.println("Displaying " + filename);
    }
}

// Прокси
class ProxyImage implements Image {
    private RealImage realImage;
    private String filename;

    public ProxyImage(String filename) {
        this.filename = filename;
    }

    @Override
    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename); // ленивое создание
        }
        realImage.display();
    }
}

// Использование
public class ProxyPatternDemo {
    public static void main(String[] args) {
        Image image = new ProxyImage("test_image.jpg");

        // Изображение загружается с диска только при первом вызове display
        image.display();
        image.display();
    }
}

В этом примере ProxyImage контролирует создание и доступ к RealImage, загружая изображение с диска только при необходимости (ленивая загрузка). Это экономит ресурсы, если изображение не используется сразу.