8. 복합체 패턴(Composite Pattern) 설계

8. 3 디자인

복합체 패턴에 대한 설명을 위해 트리와 경로, 카테고리 형식을 예로 들겠습니다.

경로는 단일 개체이며 카테고리는 복합 개체입니다. 카테고리에는 경로 개체와 카테고리 개체를 자식 요소로 포함할 수 있습니다. 복합체 패턴을 이용하면 경로(단일 개체)나  카테고리(복합 개체)를 같은 방법으로 사용할 수 있게 됩니다. 이를 위해 경로와 카테고리를 일반화하여 기반 형식으로 트리를 만들 것입니다.

같은 방식으로 사용할 수 있게 하려고 경로 개체에서 할 수 있는 기능과 카테고리 개체로 할 수 있는 모든 기능을 트리에서 제공할 것입니다. 그리고 경로와 카테고리에서는 자신들이 제공해야 할 기능에 대해 재정의를 해 줍니다. 그리고 카테고리 개체는 복합 개체이므로 트리 형식의 개체를 소유할 수 있게 해 줍니다.

개요에서도 말했듯이 복합체 패턴을 적용하면 단일 개체와 복합 개체를 같은 방법으로 사용할 수는 있지만 불필요한 기능이 노출되는 단점을 갖고 있다는 것을 잊지 말아야 할 것입니다.

복합체 패턴 클래스 다이어그램
[그림] 복합체 패턴 클래스 다이어그램