프록시 패턴
프록시 패턴이란?⌗
어떤 객체에 대한 접근을 제어하는 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
다른 객에 대한 접근 제어나 가상 객체로 실제 처리시에만 처리 가능하게 하는 패턴
구조⌗
Subject
Proxy와 RealSubject의 인터페이스Proxy
클라이언트 요구를 처리할 수 있을 만큼 처리, 자신만으로 처리가 안될시 실 객체에 위임RealSubject
실제 처리하는 객체
종류⌗
원격 프록시
원격 객체에 대한 접근 제어가 가능합니다가상 프록시
Virtual Proxy
객체의 생성비용이 많이 들어 미리 생성하기 힘든 객체에 대한 접근 및 생성시점 등을 제어합니다보호 프록시
Protection Proxy
객체에 따른 접근 권한을 제어해야하는 객체에 대한 접근을 제어할 수 있습니다방화벽 프록시
일련의 네트워크 자원에 대한 접근을 제어함으로써 주 객체를 나쁜 클라이언트들로부터 보호하는 역할을 합니다스마트 레퍼런스 프록시
Smart Reference Proxy
주 객체가 참조될 때마다 추가 행동을 제공합니다캐싱 프록시
Caching Proxy
비용이 많이 드는 작업의 결과를 임시로 저장 하고
추후 여러 클라이언트에 저장된 결과를 실제 작업처리 대신 보여주고 자원을 절약하는 역할을 합니다동기화 프록시
Synchronization Proxy
여러 스레드에서 주 객체에 접근하는 경우에 안전하게 작업을 처리할 수 있게 해줍니다
주로 분산 환경에서 일련의 객체에 대한 동기화 된 접근을 제어해주는 자바 스페이스에서 쓰입니다복잡도 숨김 프록시
Complexity Hiding Proxy
복잡한 클래스들의 집합에 대한 접근을 제어하고, 복잡도를 숨깁니다지연 복사 프록시
Copy-On-Write Proxy
클라이언트에서 필요로 할 때까지 객체가 복사되는 것을 지연시킴으로써 객체의 복사를 제어합니다
변형된 가상 프록시라고 할 수 있으며 Java 5 의 CopyOnWriteArrayList 에서 쓰입니다
장점⌗
실제 처리되는 로직이 비용이 클 경우
처리 순서를 미뤄 효율적으로 대처할 수 있다.
실제 처리하는 객체에 대해 앞서 처리과정을 거친 후 처리할 수 있다.
단점⌗
추가적으로 객체가 생성되어, 오히려 성능이 저하될 수 있다.
올바른 처리과정을 위해 스레드 처리 및 동기화 로직을 적절히 구사해야한다.
시스템 자체의 코드 복잡도가 늘어난다.