Proxy는 실제 Target의 기능을 수행하면서 기능을 확장하거나 추가하는 실제 객체(Object)를 의미한다.
Proxy Pattern은 Client가 Target에 접근하는 방식을 변경해 주는 역할을 한다.
Client가 요청(RealSubject의 dolt()메서드 호출)을 하면, Proxy가 대신 RealSubject의 dolt()메서드 호출을 하고 그 반환 값을 클라이언트에게 전달하는 구조이다.
우리는 부수적인 업무로직을 Proxy에 코딩하고 주요한 업무 로직만 클래스에 구현할 수 있게 된다.
JAVA 예제
public interface Payment {
int amount(int payMoney);
}
public class FundsPaidFromAccount implements Payment{
@Override
public int amount(int payMoney) {
System.out.println(payMoney);
return payMoney;
}
}
public class CheckProxy implements Payment{
Payment payment = new FundsPaidFromAccount();
@Override
public int amount(int payMoney) {
System.out.println("***************ProxyTest Start***************");
int money = payment.amount(payMoney);
System.out.println("***************ProxyTest End***************");
return money;
}
}
public class Main {
public static void main(String[] args) {
Payment payment = new CheckProxy();
payment.amount(100000);
}
}
프록시 패턴은 Spring AOP에 적용된다.
Spring AOP에 대해서는 [Spring/개념] - Spring AOP (Proxy) 포스팅을 확인 바란다.
퍼사드(Facade) 패턴 (0) | 2024.11.12 |
---|---|
옵저버패턴(Observer Pattern) (0) | 2022.08.15 |
팩토리 패턴 (팩토리 메서드 패턴, 추상 팩토리 패턴) (0) | 2021.12.09 |
디자인 패턴 정리 (2) | 2021.10.15 |
[싱글톤 패턴] Singleton Pattern (5) | 2021.10.13 |
댓글 영역