프록시 패턴

강한친구·2022년 4월 18일
0

OOP Desing Pattern

목록 보기
15/15

프록시

프록시란 서버쪽에서도 종종 사용하지만 대리자, 대변인이란 뜻으로 어떤 일을 대신 해주는것을 의미한다.

구체적으로 프록시 패턴은 인터페이스를 사용하면서 기능을 정의하는 구상객체 대신 투입해서 대리자 객체를 통해 메서드를 호출하고 반환 값을 받는지 전혀 모르게 처리하는 것이다.

작동 예시

출시

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
    }
}

클라이언트가 DoAction()이라는 메서드를 요청했을때, 이를 프록시가 받아서 처리하고 반환값을 가져온 다음 클라이언트에게 넘겨주는 방식이다.

이러한 방식을 사용하면 클라이언트는 결과만 받아보게 되고, 내부 내용은 아무것도 모르는 OCP, DIP 설계 원칙을 지킨 좋은 객체지향 디자인이 완성된다.

0개의 댓글