복합 객체 패턴은 객체를 일관된 방식으로 다루는 방법 중 하나입니다. 이 패턴을 사용하면 복잡한 구조의 객체를 구성하고, 그 구조를 유지하면서 객체를 다룰 수 있습니다. 이 글에서는 복합 객체 패턴이 무엇인지, 왜 사용해야 하는지에 대해 알아보겠습니다.

복합 객체란 무엇인가?

복합 객체란, 다른 객체들을 포함하고 있는 객체를 의미합니다. 즉, 객체 내부에 다른 객체들이 중첩되어 있는 것을 말합니다. 예를 들어, 어떤 회사의 조직도를 생각해보면, 회사 전체를 나타내는 객체 안에 부서 객체들이 있고, 부서 객체 안에는 팀 객체들이 있을 것입니다. 이때, 회사 객체가 복합 객체이고, 부서와 팀 객체는 각각 회사 객체 안에 중첩된 복합 객체입니다.

복합 객체 패턴은 이러한 복합 객체를 다루는 방법을 제공합니다. 이 패턴을 사용하면, 복합 객체 안에 포함된 객체들을 일관된 방식으로 다룰 수 있습니다. 이는 객체의 구조가 변경되더라도, 객체를 다루는 방법을 일관된 상태로 유지할 수 있게 해줍니다.

왜 복합 객체 패턴을 사용해야 하는가?

복합 객체 패턴을 사용하면, 복잡한 구조의 객체를 다루는 것이 훨씬 효율적이고 간편해집니다. 이 패턴을 사용하면, 객체의 구조가 변경되더라도 객체를 다루는 방법을 일관된 상태로 유지할 수 있기 때문입니다. 또한, 객체의 구조를 변경해야 하는 경우, 이 패턴을 사용하면 구조 변경의 영향을 최소화할 수 있습니다.

아래는 복합 객체 패턴의 예시 코드입니다.

interface Component {
    void operation();
}

class Leaf implements Component {
    public void operation() {
        // Leaf operation
    }
}

class Composite implements Component {
    private List children = new ArrayList();

    public void add(Component component) {
        children.add(component);
    }

    public void remove(Component component) {
        children.remove(component);
    }

    public void operation() {
        for (Component component : children) {
            component.operation();
        }
    }
}

위 코드에서 Component는 복합 객체와 단일 객체를 모두 포함하는 객체를 나타내는 인터페이스입니다. Leaf는 단일 객체를 나타내며, Composite는 복합 객체를 나타냅니다. Composite에는 자식 객체들을 추가하거나 제거하는 기능이 포함되어 있으며, operation 메서드는 Composite에 속한 모든 자식 객체들의 operation 메서드를 호출합니다.

Reference : Composite Pattern: 복합 객체를 통해 일관된 방식으로 객체를 다루는 방법

+ Recent posts