Junior — Middle
74
Имел ли опыт использования паттерна Proxy в своих проектах?
Answer from AI
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();
}
}
Такой подход позволяет добавлять дополнительную логику (например, логирование, проверку прав) без изменения кода реального объекта.