프록시는 클라이언트가 사용하는 실제 서비스 객체를 대신하는 객체를 제공하는 구조 디자인 패턴입니다. 프록시는 클라이언트 요청을 수신하고, 일부 작업(접근 제어, 캐싱 등)을 수행한 다음 요청을 서비스 객체에 전달합니다.
프록시 객체는 서비스 객체와 같은 인터페이스를 가지기 때문에 클라이언트에 전달되면 실제 객체와 상호교환이 가능합니다.
복잡도:
인기도:
사용 사례들: 프록시 패턴은 대부분의 자바 앱에서 일반적으로 발견되지 않습니다. 그러나 일부 특별한 경우에는 여전히 매우 유용할 수 있습니다. 클라이언트 코드를 변경하지 않고 기존 클래스의 객체에 몇 가지 추가 행동들을 추가해야 할 때 매우 유용합니다.
다음은 표준 자바 라이브러리로부터 가져온 몇 가지 예시들입니다:
식별: 프록시들은 모든 실제 작업을 다른 객체에 위임합니다. 각 프록시 메서드는 프록시가 서비스 객체의 자식 클래스가 아닌 이상 최종적으로 서비스 객체를 참조해야 합니다.
프록시 캐싱
이 예시에서 프록시 패턴은 비효율적인 타사 유튜브 통합 라이브러리에 대한 게으른 초기화 및 캐싱을 구현하는 것을 돕습니다.
프록시는 당신이 코드를 변경할 수 없는 클래스에 몇 가지 추가 행동들을 추가해야 할 때 매우 중요합니다.
some_cool_media_library
some_cool_media_library/ThirdPartyYouTubeLib.java: 원격 서비스 인터페이스
some_cool_media_library/ThirdPartyYouTubeClass.java: 원격 서비스 구현
some_cool_media_library/Video.java: 비디오 파일
proxy
proxy/YouTubeCacheProxy.java: 캐싱 프록시
downloader
downloader/YouTubeDownloader.java: 미디어 다운로더 앱
Demo.java: 초기화 코드
OutputDemo.txt: 실행 결과