Development, Architecture/Design Pattern

[디자인 패턴] Proxy Pattern 프록시 패턴

ggyongi 2021. 12. 1. 16:23

Proxy Pattern

Definition

프록시 패턴은 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴입니다.

Structure

image

Types

프록시 패턴은 다양하게 활용이 될 수 있습니다.

원격 프록시는 원격 객체에 대한 접근을 제어할 수 있습니다.
가상 프록시는 생성하기 힘든 자원에 대한 접근을 제어할 수 있습니다.
보호 프록시는 접근 권한이 필요한 자원에 대한 접근을 제어할 수 있습니다.

Source Code

이번 예제에서는 가장 간단한 프록시 패턴 형태만을 살펴보겠습니다.

가장 먼저 Subject 인터페이스를 만들어줍니다. 여기선 IService가 Subject 인터페이스에 해당합니다.

package proxy_pattern;

public interface IService {
    String runSomething();
}

그리고 RealSubject 클래스를 작성합니다. 여기서는 Service 클래스에 해당합니다.

package proxy_pattern;

public class Service implements IService {

    @Override
    public String runSomething() {
        return "서비스 실행";
    }

}

그리고 프록시 클래스를 만듭니다.

package proxy_pattern;

public class Proxy implements IService {

    IService iService;

    @Override
    public String runSomething() {
        iService = new Service();
        return iService.runSomething(); // delegate  
    }

}

테스트는 다음과 같이 진행됩니다.

package proxy_pattern;

public class PatternTest {

    public static void main(String[] args) {
        Proxy proxy = new Proxy();
        System.out.println(proxy.runSomething());

    }

}

출력 결과는 다음과 같습니다.

서비스 실행

Reference

책 - 헤드퍼스트 디자인패턴

더 자세한 내용
원격 프록시 관련 참고 글 : https://gre-eny.tistory.com/253
가상 프록시, 보호 프록시 관련 글 : https://jdm.kr/blog/235