Composite 패턴은 객체의 그룹됨을 이용한 객체의 임의적 묶음에 대한 패턴이다. Composite 패턴은 크게 Component, Composife, leaf 등으로 구성된다. Component는 클래스 구조에서 최상위에 해당하는 요소로서 객체의 그룹화 및 포함하는 인스턴스의 동적관리를 위한 내부적 자료구조와 사용을 위한 메서드(인터페이스)를 포함하게 되며 일반적으로 추상클래스가 그 성질이 된다.
Composite는 container로서의 성질을 가지며 하위인스턴스를 포함할 수 있다. leaf는 단말의 성질을 가지며 하위인스턴스를 포함할 수 없고 인스턴스의 포함에 대한 메서드도 동작시킬 수 없다. leaf는 종류별로 고유의 특성을 가지는것이 일반적이며 Composite에 의해 관리될 수 있는 (그룹의 요소를 포함/제거 할 수 있는) 성질을 가진다.
Composite와 leaf는 본질적으로 같은 뿌리에서 나왔으므로 기본적인 뼈대는 동일하다고 봐야하지만 실제 사용되는 부분에서는 차이가 있다고 인식해야 한다. 이에대한 좋은 예로서 [디자인 패턴]에 언급되어있는 computer parts에 대한 내용이 좋은데, 개념적인 단계에서 Composite 패턴을 활용까지 풀어냈다고 할 수 있다.
Composite의 특징에는 factory Method 를 이용한 행위 구현에 대한 위임이 있다. 구조화 된 객체 트리구조와 추상클래스에서 하위클래스로 이어지는 구체적 구현에 대해 위임의 형태를 가지는 경우라면 Composite 패턴으로 간주하기도 한다.
[DPSC composite 패턴 – Signal Collection] 부분참고.