Back to questions
Aston
Junior — Middle
58
Передает ли прокси-объект создание нового экземпляра того же класса, что и целевой объект?
Companies where asked
Answer from AI
sobes.tech AI
Прокси-объект в Java обычно не создает новый экземпляр того же класса, что и целевой объект. Вместо этого прокси выступает как обёртка или посредник, который перехватывает вызовы методов и может добавить дополнительную логику (например, логирование, кэширование, транзакции).
Прокси реализует тот же интерфейс или наследует класс, но сам по себе не создает новый объект целевого класса при каждом вызове. Вместо этого он содержит ссылку на уже существующий целевой объект и делегирует вызовы ему.
Пример с использованием динамического прокси:
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 target;
public ProxyHandler(Object target) {
this.target = target;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("Перед вызовом метода");
Object result = method.invoke(target, args);
System.out.println("После вызова метода");
return result;
}
}
public class Main {
public static void main(String[] args) {
Service real = new RealService();
Service proxy = (Service) Proxy.newProxyInstance(
Service.class.getClassLoader(),
new Class[]{Service.class},
new ProxyHandler(real));
proxy.perform();
}
}
Здесь прокси не создает новый RealService, а использует существующий объект real.