책너두 (헤드 퍼스트 디자인 패턴) 37일차 (~502p)

요약

  • 프록시 패턴
    • 프록시 패턴의 정의
    • 원격 프록시와 가상 프록시 비교하기
    • 앨범 커버 뷰어 만들기
    • 앨범 커버 가상 프록시 설계하기

메모

프록시 패턴의 정의

📍 프록시 패턴(Proxy Pattern) : 특정 객체로의 접근을 제어하는 대리인(특정 객체를 대변하는 객체)을 제공함.
  • 프록시 패턴을 사용하면 원격 객체라든가 생성하기 힘든 객체, 보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리인 객체를 만들 수 있음.
  • 프록시에서 원격 객체로의 접근을 제어하는 몇 가지 방법이 있음.
    • 원격 프록시를 써서 원격 객체로의 접근을 제어할 수 있음.
    • 가상 프록시(virtual proxy)를 써서 생성하기 힘든 자원으로의 접근을 제어할 수 있음.
    • 보호 프록시(protection proxy)를 써서 접근 권한이 필요한 자원으로의 접근을 제어할 수 있음.

  • Proxy와 RealSubject 모두 Subject 인터페이스를 구현함.
    • 어떤 클라이언트에서든 프록시를 주제와 똑같은 식으로 다룰 수 있음.
  • RealSubject는 진짜 작업을 대부분 처리하는 객체임
    • Proxy는 이 객체로의 접근을 제어하는 객체임
  • Proxy에서 RealSubject의 인스턴스를 생성하거나, 그 객체의 생성 과정에 관여하는 경우가 많음.
  • Proxy에는 진짜 작업을 처리하는 객체의 레퍼런스가 들어있음.(RealSubject)
    • 진짜 객체가 필요하면 그 레퍼런스를 사용해서 요청을 전달함.

원격 프록시와 가상 프록시 비교하기

  • 원격 프록시
    • 다른 JVM에 들어있는 객체의 대리인에 해당하는 로컬 객체임.
    • 프록시의 메소드를 호출하면 그 호출이 네트워크로 전달되어 결국 원격 개체의 메소드가 호출됨.
    • 그 결과는 다시 프록시를 거쳐서 클라이언트에게 전달됨.
  • 가상 프록시
    • 생성하는 데 많은 비용이 드는 객체를 대신함.
    • 진짜 객체가 필요한 상황이 오기 전까지 객체의 생성을 미루는 기능을 제공함.
    • 객체 생성 전이나 객체 생성 도중에 객체를 대신하기도 함.
    • 객체 생성이 끝나면 그냥 RealSubject에 직접 요청을 전달함.

앨범 커버 뷰어 만들기

  • 앨범 커버 뷰어를 만드는데, 네트워크로 이미지를 불러오도록 할 수 있음.
    • 네트워크 상태나 인터넷 연결 속도에 따라 앨범 커버 이미지를 가져오는 데 시간이 걸릴 수 있음.
    • 이미지를 불러오는 동안 화면에 뭔가 다른 걸 보여주면 좋음.
    • 이를 가상 프록시를 사용하면 간단하게 문제를 해결할 수 있음.

앨범 커버 가상 프록시 설계하기

  • p492 참고

댓글

Designed by JB FACTORY