다른 객체에 대한 대체 또는 자리표시자를 제공하는 디자인 패턴
실제 객체에 대한 접근을 제어하면서 추가적인 기능을 제공함
실제 객체와 프록시 객체의 공통 인터페이스 정의
실제 객체를 나타내는 클래스, Subject 구현
RealSubject 와 동일한 인터페이스를 가지면, RealSubject를 대신하여 클라이언트 요청 처리
- 실제 객체의 생성을 지연시켜 성능을 향상
- 객체가 실제로 필요할 때까지 생성을 미루는 지연 초기화(Lazy Initialization) 구현
- 네트워크를 통해 분산된 객체에 접근
- 원격 서버에 있는 객체를 로컬에서 사용하는 것처럼 제공
- 클라이언트의 접근 권한이나 보안 문제를 처리
- 객체에 대한 접근을 허용하거나 제한하는 기능 제공
- 실제 객체에 대환 추가적인 작업을 처리하는 역할
- 로깅, 성능 측정, 캐싱 등의 부가 기능 제공
원본 객체에 직접 접근하지 않아 보안성 향상
접근 권한 제한 및 로그 기록 가능
지연 초기화를 통해 불필요한 객체 생성을 방지
캐싱을 통한 성능 향상
실제 객체 호출 전후에 로깅, 검증, 변환 등의 부가 기능 수행 가능
복잡한 객체의 생성 비용을 줄이고 리소스 사용량 최적화