프록시 패턴

DEV_HOYA·2023년 10월 19일
0

CS

목록 보기
18/55
post-thumbnail

📌 프록시 패턴(Proxy)

⭐ 개념

  • 객체가 어떤 대상 객체에 접근하기 전, 그 접근에 대한 흐름을 가로채서 해당 접근을 필터링하거나 수정하는 등의 역할을 하는 계층이 있는 디자인패턴

⭐ 코드

public class Main {
    public static void main(String[] args) {
        ServiceInterface proxy = new Proxy(); // Service클래스의 메소드를 호출하는것이아닌 Proxy 클래스의 메소드를 호출한다.
        System.out.println(proxy.operation()); // 내부적으로 Service의 메소드를 호출한다.
    }
}
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();  // Proxy가 실제의 메소드를 호출한다.
    }

}
public class Service implements ServiceInterface {
    @Override
    public String operation() {
        return "서비스클래스 호출";
    }
}
/*
프록시클래스 호출
서비스클래스 호출
*/

⭐ 장/단점

💡 장점

  • 클라이언트들이 알지 못하는 상태에서 서비스 객체를 제어할 수 있다.
  • OCP(개방/폐쇄 원칙) : 서비스나 클라이언트들을 변경하지 않고도 새 프록시들을 도입할 수 있다.
  • DDOS같은 공격에 보안으로 활용가능
    ex) Cloudflare Edge

💡 단점

  • 새로운 클래스들을 많이 도입해야 하므로 코드가 복잡해질 수 있다.
  • 서비스의 응답이 늦어질 수 있다.

0개의 댓글