프록시는 구조적 디자인 패턴 중 하나이며, 원본 개체에 대한 액세스를 제어하는 데 사용되는 대리 또는 자리 표시자 개체를 만드는 데 사용됩니다.
이는 제어 수준을 추가하는 중개자 역할을 하며 실제 객체에 요청을 위임하기 전후에 추가 작업을 수행할 수 있습니다.
주요 개념:
프록시 객체: 실제 객체를 나타내며 이에 대한 접근을 제어합니다.
실제 객체(주제): 작업을 수행하는 실제 객체
클라이언트: 실제 객체가 아닌 프록시와 직접 상호작용하는 엔터티
이미지를 예로 들어 이해해 보겠습니다.
//Object interface public interface Image{ public void display(); } //Real object public class RealImage implements Image { private String file; public RealImage(String fileName){ this.file = fileName; loadImageFromDisk(); } @Override public void display(){ System.out.println("Rendering image : "+ file); } private void loadImageFromDisk(){ System.out.println("Loading image "+file+" from disk"); } } //대리 class public class 대리Image implements Image { private Image image; private String file; public 대리Image(String fileName){ this.file =fileName; } @Override public void display(){ if(image ==null){// create object of RealImage only if the image reference is null, thus resulting in LazyIntialization //( i.e. Initializing the object only when it is needed not beforehand) image = new RealImage(file); } image.display(); } } // client public class Main { public static void main(String args[]){ Image image = new 대리Image("wallpaper.png"); //image is loaded and displayed for the first time image.display(); //image will not be loaded again, only display will be called image.display(); } }
출력:
Loading image wallpaper.png from disk Rendering image : wallpaper.png
사용 사례:
지연 초기화: 꼭 필요할 때까지 객체 생성을 지연합니다.
액세스 제어: 사용자 역할이나 권한에 따라 특정 방법에 대한 액세스를 제한합니다.
로깅: 로깅 또는 모니터링 기능을 추가합니다.
위 내용은 대리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!