Composite Pattern
- 객체를 트리구조로 구성해서 부분-전체 계층구조를 구현
- 부분-전체 계층 : 부분들이 계층을 이루고 있지만 모든 부분을 묶어서 전체를 다룰 수 있는 구조
- 클라이언트에서 개별객체와 복합객체를 똑같은 방법 처리. 복합객체와 개별객체의 구분이 거의 필요 없음.
- 트리 형태의 객체 구조.
구조

- component
- 복합 객체 내에 들어있는 모든 객체의 인터페이스를 정의
- composite
- 자식이 있는 구성요소의 행동을 정의하고 자식 구성요소를 저장
- 요청을 전달받으면 컨테이너는 작업을 하위 요소들에 위임하고 중간 결과들을 처리한 다음 최종 결과들을 클라이언트에 반환
- leaf
- 하위 요소가 없는 트리의 기본구조
- 대부분의 실제 작업들을 수행
장점
- 복잡한 트리구조들과 더 편리하게 작업
- OCP. 객체 트리와 작동하는 기존 코드를 훼손하지 않고 앱에 새로운 요소 유형들을 도입 할 수 있습니다.
단점
- 기능이 너무 다른 클래스들에는 공통 인터페이스를 제공하기 어려울 수 있음
- 컴포넌트 인터페이스를 과도하게 일반화 해야해서 이해하기 어렵게 만들 수 있음
예
- 자바 스윙컴포넌트
참조
'지식 > 디자인패턴' 카테고리의 다른 글
| Head First Design Patterns : State Pattern (0) | 2024.03.13 |
|---|---|
| Head First Design Patterns : Iterator pattern (0) | 2024.02.25 |
| Head First Design Patterns : Template Method Pattern (0) | 2024.01.29 |
| Head First Design Patterns : Facade Pattern (0) | 2024.01.29 |
| Head First Design Patterns : Adapter Pattern (0) | 2024.01.16 |