정의

  • 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
  • 클라이언트에서 메소드 호출시 호출을 중간에 가로채어 메소드 호출/ 접근제한등을 한다.

프록시 종류

  • 원격(Remote Proxy) 프록시
  • 가상(Virtual Proxy) 프록시
  • 동적(Dynamic Proxy) 프록시
  • 보호(Protection Proxy) 프록시

원격(Remote Proxy) 프록시

  • 다른 jvm에 들어있는 객체의 대변인에 해당하는 로컬 객체.
  • 프록시의 메소드를 호출하면, 그호출이 네트워크를 통해 전달되어 원격객체의 메소드가 호출, 결과는 프록시를 통해 클라이언트에게 전달됨. image

가상(Virtual Proxy) 프록시

  • 생성비용이 많이드는 객체를 대신하는 역할.
  • 진짜 객체가 필요하기 전까지 객체의 생성을 미루거나, 생성 전/중 진짜 객체를 대신한다.
  • 객체 생성 후 요청을 진짜 객체에게 직접 전달. image

동적(Dynamic Proxy) 프록시

  • 자바에 내장된 reflect 패키지를 이용하여, 즉석에서 한개이상의 인터페이스를 구현하여 메소드 호출을 지정한 클래스에 전달하는 프록시 클래스를 만드는 패턴
  • 실제 프록시 클래스는 실행중에 생성됨.

보호(Protection Proxy) 프록시

  • 접근 권한을 바탕으로 객체에 대한 접근을 제어하는 프록시 image

프록시패턴의 종류와 사용되는곳을 찾아보자