두가지 책에서 프록시 패턴을 정리해보았다.

 

- java 언어로 배우는 디자인 패턴 입문

    • Proxy의 뜻 "대리인"

    • 대리인이 본인을 대신해 대부분의 업무를 하다가, 중요하거나, 무거운 업무만 본인이 하게끔 하는 방식

    • 가상 프록시 패턴을 쓰는이유?

      • 속도 올리기: 인스턴스 생성이 불필요한 작업을 할때는 인스턴스를 초기화 안함으로써 그 리소스를 절약한다. lazy init!(가상프록시)

    • 등장주제는 주체 클래스, 프록시 클래스, 본인과 프록시가 구현하는 인터페이스 정도로 나뉨

    • 프록시 클래스, 본인 클래스는 강한결합이다.

      • 왜냐면 프록시 클래스가 본인클래스 필드 자체를 들고있기 떄문에..

      • 그런데 (Prinatable) Class.forName(className).newInstance() 처럼 리플렉션을 사용하면 Pritanble 구현한 본인 객체가 무엇이던간에  프록시 클래스는 영향을 안받을수있다..!  

- 헤드퍼스트

  • 프록시 패턴이란?

    • 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인에게 해당하는 객체를 제공하는 패턴

  • 프록시 패턴의 종류! 주요 3가지
    1. 원격 프록시  : 원격객체에 대한 프록시, 원격객체에 대한 접근을 마치 로컬에서 하듯이 한다.

      • 예 : 구글 docs..

    2. 가상 프록시 :  생성하는데 비용이 많이드는 객체에 대한 프록시. 생성비용이 많이드는 객체대신에 라이트한 프록시 객체가 대부분의 일을 대신하다가, 직접적 업무는 주체클래스가.

      • 예 : 배틀그라운드 초기 그래픽 초기화가 오래걸린다. 그렇기 때문에 프록시를 이용해서 게임이 시작되기전(비행기가 착륙하기전)까지 한정된공간에서 놀수있게했는데, 그게 프록시 패턴이다.
      • 예 : 여러명이 협업하는 상황에서 어떤 객체에 대한 구현이 완벽하게 되지않았다. 근데 해당 객체는 프로세스상 호출은 하니깐 일단은 프록시 객체를 호출하게 해놓고, 주체 객체가 구현이 완료되면 주체객체로 대체하는 방법도 있다. 실제 객체를 붙여보기전에 미리 프로세스를 진행할수있다는 장점이 있겠다.
    3. 보호 프록시 :  접근에 제한이 필요한 객체에 대한 프록시출처: https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9D%EC%8B%9C_%ED%8C%A8%ED%84%B4#/media/%ED%8C%8C%EC%9D%BC:Proxy_pattern_diagram.svg

 

'개발 > 디자인패턴' 카테고리의 다른 글

옵저버 패턴 정리  (0) 2020.07.03

+ Recent posts