코딩못하는사람

프록시 패턴(Proxy Pattern) 본문

스프링(Spring)/스프링 디자인 패턴

프록시 패턴(Proxy Pattern)

공부절대안함 2021. 3. 21. 02:20

프록시 패턴이란?

클라이언트와 서버사이에서 대리자 역할을 하며 중계해주는 프록시 서버의 느낌과 같이 프록시 패턴도 

구체화해서 사용하는 객체를 대신해서 대리자 객체(인터페이스)를 사용하여 클라이언트쪽에서

어떤 클래스를 주입받는지 알 수 없게 만들어주는 (클라이언트단만 신경쓰게 해주는)패턴입니다.

 

프록시 패턴의 특징

  • 대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.
  • 대리자는 실제 서비스에 대한 참조 변수를 갖는다(Proxy가 RealSubject를 가짐)
  • 대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다.
  • 대리자는 실제 서비스의 메서드 호출 전후에도 별도의 로직을 수행할 수도 있다.

 

프록시 디자인패턴 사진입니다.

 

https://limkydev.tistory.com/77

클라이언트가 Subject 인터페이스에 request()를 요청하면,

Proxy가 RealSubject의 인스턴스를 구현하고 인스턴스 메서드 request()를 대신 호출해줍니다. 

다음과 같이 ProxyHello는 SayHello를 대신 전해주기만 합니다. 값을 변경하거나 조작하면 안됩니다.

이 패턴을 보면 OCP(개방 폐쇄 원칙)과 DIP(의존 관계 역전)이 잘 녹아들어가 있습니다.

새로운 값을 전달해주려면 Service를 구현해서 만들면 되고 (OCP)

인터페이스를 주입받아서 구체 클래스가 아닌 추상객체에 의존했습니다.

 

프록시 패턴을 사용하는 이유?

프록시 패턴을 사용하면서 얻는 것은 흐름제어입니다.

방대한 양의 이미지나 그래픽을 로딩할 때 완료된 것을 우선적으로 보여줄 수 있다면 강한 장점이 생깁니다.

 

 

limkydev.tistory.com/79?category=957882를 보고 공부했습니다.

Comments