본문 바로가기

💻 개발IT/Design Patterns

5. Structural 패턴 - Proxy Pattern

Proxy Pattern

object에 대한 접근을 제어할 수 있는 대리인 혹은 placeholder 

사용하는 경우

  • object에 대한 접근 제어가 필요할 경우
  • object 접근할 때 추가 기능이 필요한 경우

class diagram

클라이언트가 DoAction() 메소드를 요청하면 Proxy가 대신 RealSubject의 DoAction() method를 호출하여 리턴값을 클라이언트에게 전달

  • Proxy : RealSubject에 접근할 수 있는 reference 유지 관리. Proxy가 RealSubject로 대체될 수 있도록 Subject와 동일한 인터페이스 제공. RealSubject에 대한 접근을 제어하고 생성 삭제 담당
  • Subject : Proxy 및 RealSubject의 공통 인터페이스를 정의하여 RealSubject가 예상되는 모든 위치에서 Proxy를 사용할 수 있도록 함
  • RealSubject : Proxy가 나타내는 실제 Object 정의

Proxy 종류

  1. remote proxy : request와 해당 파라미터를 인코딩하고, 인코딩된 request를 다른 address space로 전송하는 역할 
  2. virtual proxy : RealSubject에 대한 추가 정보를 캐싱하여 접근을 연기
  3. protection proxy : 호출자가 request를 수행하는 데 필요한 접근 권한을 가지고 있는지 확인

vs. Decorator Pattern

  • Proxy와 Decorator Pattern 구조 유사
  • Proxy는 Real Class에 대한 접근 제어 역할을 하고, Decorator는 Real Class에 기능을 추가하는 목적

vs. Adapter Pattern

  • Proxy는 동일한 Interface 제공, Adapter는 대상에 따라 다른 Interface 제공
반응형