컴포지트 패턴이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다.
출처: 컴포지트 패턴 위키
백기선님 강의의 컴포짓 패턴 설명
그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴
그렇기에 클라이언트는 '전체'나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다.
전체와 부분을 동일하게 다우는 경우는 어떠한 경우가 있을까?
많은 예시 중 2가지를 가져와 보면 다음과 같다.
현실과 연관시켜 생각해 본다면 위의 예시와 같이 각 부분이 동일한 행동을 했을 때 전체의 행동도 의미가 있게 되는 경우를 생각하면 될 것이다.
그래서 이러한 컴포지트 패턴은 다음과 같은 경우에 적용할 수 있다고 한다.
컴포지트 패턴은 공통 인터페이스를 공유하는 두 가지 기본 요소 유형들인 단순 잎(leaf)과 복합 컨테이너들을 제공한다.
컨테이너는 잎들과 다른 컨테이너들로 구성될 수 있으며, 이를 통해 나무와 유사한 중첩된 재귀 객체 구조를 구성할 수 있다.
컴포지트 패턴에 의해 정의된 모든 요소는 공통 인터페이스를 공유하며, 이 인터페이스를 사용하면 클라이언트는 작업하는 객체들의 구상 클래스에 대해 걱정할 필요가 없다.