프록시 패턴(Proxy Pattern)

kims·2024년 1월 2일
0
post-thumbnail
  • 프록시(Proxy)는 "대리"의 의미로 특정 객체로의 접근을 제어하는 대리인을 제공한다.

프록시 패턴 종류

1. 원격 프록시

  • 클라이언트 객체가 원격 객체(다른 JVM의 힙 영역에 생성된 객체)의 메소드를 호출하면 실제 원격 객체가 아닌 프록시 객체가 호출되고, 이 프록시 객체가 다른 원격 객체에게 메소드 호출을 전달해준다.

2. 가상 프록시

  • 생성 비용이 많이 드는 객체에 대한 접근를 제어한다.
  • 프록시는 원본 객체 생성 전이나 생성 도중에 객체를 대신하며, 객체 생성이 끝나면 직접 요청을 전달한다.

예제 코드

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));
    }
}

  • 프록시 객체는 동일한 요청이 반복되는 경우 실제 객체에 대한 요청을 생략하고 저장된 결과를 반환한다.

💡참고

profile
기술로 세상을 이롭게

0개의 댓글