프록시 패턴(Proxy Pattern)

seunghyun lee·2022년 7월 29일
0

Computer Science

목록 보기
16/19
post-thumbnail

프록시란?

  • 프록시에게 어떤 일을 대신 시키는 것이다.
  • 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조하는 것이 아닌 해당 객체를 대항하는 객체(프록시)를 통해 대상 객체에 접근하는 방식이다.
  • 실제 실행시킬 클래스에 대한 메소드를 호출하는 지 프록시의 메소드를 호출하는지 모르게 한다.
  • 프록시를 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고, 실제 객체의 기능이 필요한 시점까지 객체의 생성을 미룰 수 있다.
  • 흐름을 제어하는것만 담당하고 결과를 조작하거나 변경할 수 없다.
  • 구현클래스에 직접 접근하지않고 Proxy를 통해 한번 우회하여 접근하도록 되어있다. (흐름제어)

프록시 패턴의 예시

  • UML의 프록시

  • LePUS3의 프록시


프록시 패턴의 장단점

프록시패턴 장점

  • 객체가 로딩되기 전에 프록시를 통해 참조할 수 있다.
  • 실제 객체의 public, protected 메소드를 숨기고 인터페이스를 통해 노출시킬 수 있다.
  • 로컬에 있지 않은 객체를 사용할 수 있다.
  • 원래 객체에 접근에 대해 사전처리를 할 수 있다.
    . 인터페이스를 두기때문에 개발코드에서 구현체에 영향을 받지 않는다.

프록시패턴 단점

  • 객체를 생성할 때 프록시를 거치게 되므로, 객체를 자주 생성할 경우 성능이 저하된다.
  • 프록시 내부에서 객체 생성을 위해 스레드가 생성되기 때문에 동기화가 구현되어야 하는 경우 성능이 저하된다.
  • 로직이 난해해져 가독성이 떨어질 수 있다.

포워드 프록시 vs 리버스 프록시

포워드 프록시

  • 사용자가 서베에 연결하려할 때 포워드 프록시 서버가 요청을 받아서 서버에 연결하고 그 결과를 클라이언트에 전달(forward) 한다.

리버스 프록시

  • 리버스 프록시로 서버를 설정했을 때, 사용자가 서버에 데이터를 요청하면 리버스 프록시는 이 요청을 받아서 내부 서버에서 데이터를 받고, 이 데이터를 사용자에게 전달한다.


0개의 댓글