[java] 자바 프록시 패턴의 개념

프록시 패턴은 객체 지향 디자인 패턴 중 하나로, 다른 객체에 접근하기 위한 대리자나 대체자 역할을 하는 클래스를 생성하는 기술입니다. 이 패턴은 클라이언트와 실제 객체 사이에 중재자 역할을 하는 프록시 클래스를 도입하는 것으로, 인터페이스를 기반으로 만들어집니다.

프록시 패턴의 구현은 다음과 같습니다.

1. 인터페이스

먼저 실제 객체와 프록시 객체가 공통적으로 구현할 인터페이스를 정의합니다.

public interface Image {
    void display();
}

2. 실제 객체

클라이언트가 접근하고자 하는 객체를 만듭니다.

public class RealImage implements Image {
    private String filename;

    public RealImage(String filename) {
        this.filename = filename;
        loadImageFromDisk();
    }

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

    public void display() {
        System.out.println("Displaying " + filename);
    }
}

3. 프록시

클라이언트가 접근하기 전에 중간에서 처리할 프록시 객체를 만듭니다.

public class ProxyImage implements Image {
    private String filename;
    private RealImage realImage;

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

    public void display() {
        if (realImage == null) {
            realImage = new RealImage(filename);
        }
        realImage.display();
    }
}

4. 클라이언트

프록시를 통해 실제 객체에 접근합니다.

public class Client {
    public static void main(String[] args) {
        Image image = new ProxyImage("test.jpg");

        image.display();
    }
}

프록시 패턴은 실제 객체에 대한 접근을 제어하거나 추가적인 기능을 제공할 수 있는 유연성을 제공합니다. 또한, 코드의 재사용성성능 향상에도 도움이 되는 패턴으로, 많은 자바 라이브러리와 프레임워크에서 사용되고 있습니다.

참고 문헌