본문 바로가기
지식/디자인패턴

Head First Design Patterns : Composite Pattern

by CodeRain 2024. 2. 25.

Composite Pattern

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

 

구조

  • component
    • 복합 객체 내에 들어있는 모든 객체의 인터페이스를 정의
  • composite
    • 자식이 있는 구성요소의 행동을 정의하고 자식 구성요소를 저장
    • 요청을 전달받으면 컨테이너는 작업을 하위 요소들에 위임하고 중간 결과들을 처리한 다음 최종 결과들을 클라이언트에 반환
  • leaf
    • 하위 요소가 없는 트리의 기본구조
    • 대부분의 실제 작업들을 수행

 

장점

  • 복잡한 트리구조들과 더 편리하게 작업
  • OCP. 객체 트리와 작동하는 기존 코드를 훼손하지 않고 앱에 새로운 요소 유형들을 도입 할 수 있습니다.

 

단점

  • 기능이 너무 다른 클래스들에는 공통 인터페이스를 제공하기 어려울 수 있음
  • 컴포넌트 인터페이스를 과도하게 일반화 해야해서 이해하기 어렵게 만들 수 있음

 

  • 자바 스윙컴포넌트

 

참조