취미처럼

[DP] 프록시 패턴 본문

Design Pattern

[DP] 프록시 패턴

sirius 2021. 3. 19. 10:13

프록시 패턴(proxy pattern)

 

대상 객체에 접근하기 전 그 접근에 대한 흐름을  가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴

이를 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다.

프록시 패턴을 간단하게 정리하자면 제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴

 

import java.util.*;

interface Image {
    public void displayImage();
}

//on System A
class RealImage implements Image {
    private String filename;
    public RealImage(String filename) {
        this.filename = filename;
        loadImageFromDisk();
    }

    private void loadImageFromDisk() {
        System.out.println("Loading   " + filename);
    }

    @Override
    public void displayImage() {
        System.out.println("Displaying " + filename);
    }
}

//on System B
class ProxyImage implements Image {
    private String filename;
    private Image image;

    public ProxyImage(String filename) {
        this.filename = filename;
    }

    @Override
    public void displayImage() {
        if (image == null)
           image = new RealImage(filename);

        image.displayImage();
    }
}

class ProxyExample {
    public static void main(String[] args) {
        Image image1 = new ProxyImage("HiRes_10MB_Photo1");
        Image image2 = new ProxyImage("HiRes_10MB_Photo2");

        image1.displayImage(); // loading necessary
        image2.displayImage(); // loading necessary
    }
}

'Design Pattern' 카테고리의 다른 글

[DP] 데코레이터 패턴  (0) 2021.03.19
[DP] 빌더 패턴  (0) 2021.03.19
[DP] 옵저버 패턴  (0) 2021.03.19
[DP] 전략 패턴  (0) 2021.03.19
[DP] 팩토리 패턴  (0) 2021.03.19
Comments