Back to questions
Aston
Junior — Middle
60
Каким образом можно реализовать прокси-объект для контроля доступа или добавления дополнительной логики?
Companies where asked
Answer from AI
sobes.tech AI
Прокси-объект в Java можно реализовать с помощью паттерна "Proxy" или динамических прокси, чтобы контролировать доступ или добавить дополнительную логику при вызове методов.
Пример с использованием динамического прокси:
import java.lang.reflect.*;
interface Service {
void perform();
}
class RealService implements Service {
public void perform() {
System.out.println("Выполнение основной логики");
}
}
class ProxyHandler implements InvocationHandler {
private final Object realObject;
public ProxyHandler(Object realObject) {
this.realObject = realObject;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Проверка доступа перед вызовом метода");
Object result = method.invoke(realObject, 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.perform();
}
}
Такой прокси позволяет перехватывать вызовы методов, добавлять проверки или логику до и после вызова реального объекта.