📌 프록시 패턴(Proxy)
⭐ 개념
- 객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채서 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인패턴
⭐ 코드
public class Main {
public static void main(String[] args) {
ServiceInterface proxy = new Proxy();
System.out.println(proxy.operation());
}
}
public interface ServiceInterface {
String operation();
}
public class Proxy implements ServiceInterface {
private final Service service = new Service();
@Override
public String operation() {
System.out.println("프록시클래스 호출")
return service.operation();
}
}
public class Service implements ServiceInterface {
@Override
public String operation() {
return "서비스클래스 호출";
}
}
⭐ 장/단점
💡 장점
- 클라이언트들이 알지 못하는 상태에서 서비스 객체를 제어할 수 있다.
- OCP(개방/폐쇄 원칙) : 서비스나 클라이언트들을 변경하지 않고도 새 프록시들을 도입할 수 있다.
- DDOS같은 공격에 보안으로 활용가능
ex) Cloudflare Edge
💡 단점
- 새로운 클래스들을 많이 도입해야 하므로 코드가 복잡해질 수 있다.
- 서비스의 응답이 늦어질 수 있다.