[java] 프록시 패턴

프록시 패턴은 객체 지향 설계 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)을 따르며, 구조적 디자인 패턴 중 하나입니다. 프록시는 실제 객체(real object)에 대한 대리자(대리 객체) 역할을 수행하며, 클라이언트와 실제 객체 간의 중계 역할을 담당합니다.

왜 프록시 패턴을 사용해야 하나요?

프록시 패턴을 사용하면, 실제 객체에 접근하는 방식을 제어하고 객체에 접근하기 전에 추가적인 작업을 수행할 수 있습니다. 이를 통해 실제 객체의 생성 및 초기화를 지연시키거나, 객체에 대한 접근 및 보안을 제어할 수 있습니다.

프록시 패턴의 예시

public interface Image {
    void display();
}

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

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();
    }
}

프록시 패턴의 장점

프록시 패턴은 실제 객체에 대한 접근을 중개하며, 특정 기능을 추가할 수 있는 유연한 구조를 제공합니다. Java에서는 인터페이스를 이용하여 프록시 객체를 생성하여 구현할 수 있습니다.

자세한 내용은 Java Design Patterns: The Proxy Pattern를 참고하시기 바랍니다.