[java] 포워딩 대프록싱 패턴

토픽: 디자인 패턴, 자바

소개

이번 포스트에서는 포워딩 대프록싱 패턴에 대해 알아보겠습니다. 이 패턴은 객체지향 소프트웨어 설계에서 자주 사용되며, 구조적 패턴 중 하나입니다. 포워딩 대프록싱은 객체지향 설계의 중요한 측면 중 하나인 의존성 제거를 위해 사용됩니다.

포워딩 대프록싱이란?

포워딩 대프록싱은 한 객체가 다른 객체에 대한 참조를 보유하고 있는 상황에서, 외부 코드가 해당 객체에 직접 접근하는 것을 막고, 대신 참조하고 있는 객체를 통해 간접적으로 접근하도록 하는 디자인 패턴입니다.

포워딩 대프록싱의 장점

포워딩 대프록싱 패턴을 사용하면 다음과 같은 장점을 얻을 수 있습니다:

자바에서의 포워딩 대프록싱 예제

다음은 자바에서 포워딩 대프록싱 패턴을 구현한 예제입니다:

interface Image {
    void display();
}

class RealImage implements Image {
    private String filename;

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

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

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

class ImageProxy implements Image {
    private RealImage realImage;
    private String filename;

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

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

public class Main {
    public static void main(String[] args) {
        Image image = new ImageProxy("test.jpg");
        image.display();
    }
}

마무리

포워딩 대프록싱은 객체지향 설계에서 의존성을 제거하고 보안을 강화하는 데 중요한 역할을 합니다. 이 디자인 패턴을 적절히 활용하여 소프트웨어를 보다 견고하고 유연하게 만들 수 있습니다.

참고 자료