728x90
반응형
일반적으로 프록시는 다른 무언가와 이어지는 인터페이스 역할을 하는 클래스이다.
프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체, 파일, 또 복제할 수 없거나 수요가 많은 리소스와도 인터페이스 역할을 수행할 수 있다.
프록시(Proxy)란 '대리'라는 의미이다.
프록시에게 어떤 일을 대신 시키는 것이다.
어떤 객체를 사용하고자 할때, 객체를 직접 참조 하는 것이 아니라 해당 객체를 대행하는 객체를 통해 대상객체에 접근하는 방식을 사용. 이렇게하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있고 또한 실제 객체의 기능이 반드시 필요한 시점까지 객체의 생성을 미룰 수 있다.
보호하고 있는 개체에 대한 접근을 제어하고 관리한다.
쉽게 예를 들면 수표나 신용카드, 은행계좌가 현금을 대신해주는 것이다.
현금 대신 사용할 수 있으며 필요할때 현금에 접근 할 수 있는 수단을 제공한다.
이것이 바로 프록시 패턴이 하는 일이다.
예시 코드
interface Image {
public void displayImage();
}
class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadImageFromDisk();
}
public void loadImageFromDisk() {
System.out.println("Loading " + filename);
}
public void displayImage() {
System.out.println("Displaying " + filename);
}
}
class ProxyImage implements Image {
private String filename;
private Image image;
public ProxyImage(String filename) {
this.filename = filename;
}
public void displayImage() {
if(image == null) {
image = new RealImage(filename);
image.displayImage();
}
}
}
class Main {
public static void main(String[] args) {
Image image1 = new ProxyImage("HiRes_10MB_Photo1");
Image imgae2 = new ProxyImage("HiRes_10MB_Photo2");
image1.displayImage();
imgae2.displayImage();
}
}
Loading HiRes_10MB_Photo1
Displaying HiRes_10MB_Photo1
Loading HiRes_10MB_Photo2
Displaying HiRes_10MB_Photo2
Main에서 RealImage에 직접 접근하지 않고
ProxyImage 객체를 생성해서 대신 시킨다.
출처
위키백과 - 프록시 패턴
https://coding-factory.tistory.com/711
https://www.geeksforgeeks.org/proxy-design-pattern/
728x90
반응형
'Programming > java' 카테고리의 다른 글
[log4j2] log4j + mybatis 쿼리 로그 찍기 (0) | 2022.04.02 |
---|---|
[log4j] java log4j2 적용하기 / log4j2 properties / log4j 옵션, 설정 (0) | 2022.04.02 |
[java] fileUpload 파일 업로드 유틸 만들기 (0) | 2022.04.01 |
[java]FileUpload할때 내문서 경로 가져오기 (0) | 2022.03.29 |
post와 get (0) | 2021.10.12 |