Sobes.tech
Junior — Middle
71

Имел ли опыт использования паттерна Proxy в своих проектах?

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

sobes.tech AI

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

Пример использования динамического прокси в Java:

import java.lang.reflect.*;

interface Service {
    void execute();
}

class RealService implements Service {
    public void execute() {
        System.out.println("Выполнение реального сервиса");
    }
}

class ProxyHandler implements InvocationHandler {
    private final Service realService;

    public ProxyHandler(Service realService) {
        this.realService = realService;
    }

    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
        System.out.println("Перед вызовом метода");
        Object result = method.invoke(realService, args);
        System.out.println("После вызова метода");
        return result;
    }
}

public class ProxyExample {
    public static void main(String[] args) {
        Service realService = new RealService();
        Service proxyInstance = (Service) Proxy.newProxyInstance(
            Service.class.getClassLoader(),
            new Class[]{Service.class},
            new ProxyHandler(realService));

        proxyInstance.execute();
    }
}

Такой подход позволяет добавлять дополнительную логику (например, логирование, проверку прав) без изменения кода реального объекта.