반응형
프록시 패턴에 대한 자세한 설명은 다음 글을 참고하세요. Proxy Pattern(프록시 패턴)
프록시 패턴의 예시: 이미지
구현하려는 로직
-Image 인터페이스와 Image 인터페이스를 구현하는 구체적인 클래스들을 만듭니다.
-ProxyImage는 RealImage 객체 로딩의 메모리 공간을 줄이기 위한 프록시 클래스입니다.
-demo class로 활용할 ProxyPatternDemo는 필요에 따라 Image 객체를 로딩하고 표시하기 위한 ProxyImage를 사용할 것입니다.
구현 단계
[1단계]
인터페이스를 만듭니다.
//Image.java
public interface Image {
void display();
}
[2단계]
동일한 인터페이스를 구현하는 클래스를 만듭니다.
//RealImage.java
public class RealImage implements Image {
private String fileName;
public RealImage(String fileName){
this.fileName = fileName;
loadFromDisk(fileName);
}
@Override
public void display() {
System.out.println("Displaying " + fileName);
}
private void loadFromDisk(String fileName){
System.out.println("Loading " + fileName);
}
}
//ProxyImage.java
public class ProxyImage implements Image{
private RealImage realImage;
private String fileName;
public ProxyImage(String fileName){
this.fileName = fileName;
}
@Override
public void display() {
if(realImage == null){
realImage = new RealImage(fileName);
}
realImage.display();
}
}
[3단계]
필요한 경우 RealImage 클래스의 객체를 얻기 위해 ProxyImage를 사용합니다.
//ProxyPatternDemo.java
public class ProxyPatternDemo {
public static void main(String[] args) {
Image image = new ProxyImage("test_10mb.jpg");
//image will be loaded from disk
image.display();
System.out.println("");
//image will not be loaded from disk
image.display();
}
}
[4단계]
출력 확인
Loading test_10mb.jpg
Displaying test_10mb.jpg
Displaying test_10mb.jpg
반응형
'Spring > additional' 카테고리의 다른 글
[Spring] 스프링을 통한 의존성 주입 (0) | 2021.02.28 |
---|---|
[디자인 패턴] Decorator Pattern(데코레이터 패턴) (0) | 2021.02.21 |
[디자인 패턴] Adapter Pattern(어댑터 패턴) (0) | 2021.02.21 |
[Spring]스프링이 사랑한 디자인 패턴3 (0) | 2021.02.21 |
[Spring] 스프링이 사랑한 디자인 패턴2 (0) | 2021.02.21 |