백기선님의 코딩으로 학습하는 GoF의 디자인 패턴을 참고해서 작성된 글입니다.
1) 프록시 패턴이란?
프록시 패턴은 특정 객체의 오퍼레이션을 직접 접근하지 않고, 중간에 프록시 객체를 거쳐서 접근하는 디자인 패턴입니다.
프록시 객체는 클라이언트의 요청을 받아서,
원래의 객체에 대한 접근을 제어하거나 특정 기능을 추가하는 역할을 합니다.
프록시(Proxy)는 사전적으로 '대리인'을 의미합니다.
클라이언트가 원래 객체를 직접 사용하지 않고,
중간에 위치한 프록시 객체를 통해 객체에 접근하는 패턴입니다.
클라이언트는 원래의 객체를 직접 호출하는 것이 아니라,
프록시를 통해 호출하게 됩니다.
이렇게 함으로써 원래 객체에 대한 접근을 제어하고,
특정 기능을 추가하거나 성능을 최적화할 수 있습니다.
2) 프록시 패턴의 주요 활용
(1) 접근 제어
(2) 리소스 초기화 지연
(3) 로깅 및 캐싱
3) 프록시 패턴의 장점
(1) 기존 코드 변경 없이 새로운 기능 추가 가능
(2) 단일 책임 원칙(Single Responsibility Principle) 준수
(3) 기능 다양화 및 성능 최적화
4) 프록시 패턴의 단점
(1) 코드 복잡도 증가
5)프록시 패턴의 구현
(1) 자바에서의 프록시 패턴
다이나믹 프록시: 자바에서는 java.lang.reflect.Proxy 클래스를 사용하여 런타임에 동적으로 프록시 인스턴스를 생성할 수 있습니다. 이는 객체의 메서드를 가로채고 처리하는 데 유용합니다.
(2) 스프링에서의 프록시 패턴
스프링 AOP(Aspect-Oriented Programming)