# Proxy Pattern
어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
## 원격 프록시 - 원격 객체에 대한 접근을 제어
## 가상 프록시 - 생성하기 힘든 자원에 대한 접근을 제어
## 보호 프록시 - 접근 권한이 필요한 자원에 대한 접근을 제어
## 방화벽 프록시 - 일련의 네트워크 자원에 대한 접근을 제어
## 스마트 레퍼런스 프록시 - 주 객체가 참조될 때마다 추가 행동을 제공
## 캐싱 프록시 - 비용이 많이 드는 작업의 결과를 임시로 저장.
여러 클라이언트에서 결과를 공유하게 해 줌으로써 계산 시간 또는 네트워크 지연을 주여주는 효과
## 동기화 프록시 - 여러 스레드에서 주 객체에 접근하는 경우에 안전하게 작업을 처리
## 복잡도 숨김 프록시 - 복잡한 클래스들의 집합에 대한 접근을 제어하고, 그 복잡도를 숨겨준다. 퍼사드 프록시라고 부르기도 함
퍼사드 패턴과 차이점은 프록시에서는 접근을 제어하지만 퍼사드 패턴에서는 대체 인터페이스만 제공
## 지연 복사 프록시 - 클라이언트에서 필요로 할 때까지 객체가 복사되는 것을 지연시킴으로써 객체의 복사를 제어. 변형된 가상 프록시