(다른 JVM의 힙 영역에 생성된 객체)
의 메소드를 호출하면 실제 원격 객체가 아닌 프록시 객체가 호출되고, 이 프록시 객체가 다른 원격 객체에게 메소드 호출을 전달해준다.package pattern.ex02;
// Payment.java
public interface Payment {
String request(int amount);
}
// Cash.java
public class Cash implements Payment{
@Override
public String request(int amount) {
return "결제 요청 - 금액 : " + amount;
}
}
// paymentProxy.java
public class paymentProxy implements Payment{
private Cash cash;
private String cashedData;
@Override
public String request(int amount) {
if (cash == null) {
cash = new Cash();
cashedData = cash.request(amount);
System.out.println("실제 객체 생성");
} else {
System.out.println("Proxy 객체 캐싱");
}
return cashedData;
}
}
// Main.java
public class Main {
public static void main(String[] args) {
Payment paymentProxy = new paymentProxy();
System.out.println(paymentProxy.request(1000));
System.out.println("---");
System.out.println(paymentProxy.request(1000));
}
}
💡참고