← 질문 목록
#265깊이 0

컴포지트 패턴을 어떤 상황에서 사용하는가?

아키텍처 · 분산시스템심화설계 원칙

전체와 부분의 관계를 가진 객체들을 동일한 인터페이스로 다루기 위해 사용한다. 단일 객체와 복합 객체를 구분하지 않고 하나의 타입으로 처리하고 싶을 때다.

기준리프(Leaf)컴포지트(Composite)
구성 요소단일 객체리프와 컴포지트의 집합
인터페이스기본 동작으로 구현자식 요소들의 동작을 위임

클라이언트는 형변환도 타입 구분도 하지 않고 공통 인터페이스만 부른다. 그냥 호출하면 리프는 자기 일을 하고, 컴포지트는 자식들을 돌며 같은 일을 시킨다.

이 방식은 트리 구조의 데이터를 같은 인터페이스로 다룰 때 잘 맞는다. 폴더와 파일로 구성된 파일 시스템이나 UI 컴포넌트 계층 구조가 대표적인 사례다.

다만, 자식 요소의 제약을 추가하기로 어렵다. 특정 컴포지트에만 특정 리프를 넣고 싶을 때, 인터페이스에 모든 메서드를 지원해야 하므로 런타임으로 체크해야 하는 단점이 있다.

추천 꼬리질문

0/300

적은 내용은 AI 학습에 쓰일 수 있습니다. 이름이나 연락처는 넣지 말아 주세요.

관련 질문

컴포지트 패턴을 어떤 상황에서 사용하는가?