본문 바로가기
SW 공부/Design Patterns

[디자인패턴] Composite Pattern (컴포지트 패턴)

by 꼬냉상 2022. 8. 28.

Purpose of Composite Pattern (컴포지트 패턴의 목적)

- Facilitates the creation of object hierarchies where each object can be treated independently or as a set of nested objects through the same interface.

- 각 개체를 독립적으로 처리하거나 동일한 인터페이스를 통해 중첩된 개체 집합으로 처리할 수 있는 개체 계층 구조를 쉽게 만듭니다.

 

Composite pattern (컴포지트 패턴)

- composite의 의미는 '합성의', '합성물', '혼합 양식'이다.  →뭔가 합쳐진 형태이겠지..!

- composes objects into tree structures to represent whole-part hierarchies. 

- 일반적인 트리 구조를 하고 있는데, 전체-부분 계층을 표시하는 상속 구조
- lets clients treat individual objects and compositions of objects uniformly.

- composite 패턴은 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록  →재귀적인 구조

- leaf/ non-leaf type 관계없이 동일한 access를 원할 때, uniform 하게 동일한 interface로 접근이 가능함)

Related Patterns

- Composite vs Decorator : 둘다 recursive composition이나 의도가 다르다!

   • Decorator lets you add responsibilities to objects without subclassing  (책임을 부여)

   • Composite's focus is not on embellishment but on representation (보여주는 것에 집중)

- Iterator (Composite pattern으로 생성된 객체에 순차적으로 액세스
 : provide a way to access the elements of an aggregate object (=typically uses composite pattern) sequentially without exposing its underlying representation.

Quiz) 파일 시스템의 컴포넌트의 종류에는 PlainFile, VirtualFile, 그리고 Directory가 있다. Directory에는 다른 PlainFile, VirtualFile 혹은 다른 Directory를 포함할 수 있다. 클라이언트는 이들 파일 시스템의 컴포넌트를 일관된 방식으로 다루고자 한다. 이를 위해 파일 시스템의 컴포넌트 체계를 Composite 패턴을 사용하여 표현하시오.

 

본 글은 개인의 S/W 구조설계 역량 강화를 위한 학습 목적으로 정리된 내용입니다.
일부 타/개인 단체에 저작권이 있는 자료를 포함하고 있으므로, 절대 영리 목적으로 사용하실 수 없습니다.
반응형

댓글