본문 바로가기
Design Pattern

[Design Pattern] 컴포지트 패턴 - Composite Pattern

by IsBerry 2021. 6. 18.
반응형

컴포지트 패턴

객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴

사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다.


Composite Pattern UML

- Component

컴포지션의 모든 개체에 대한 기본 인터페이스

인터페이스 또는 추상 클래스 여야 한다.

 

 

- Leaf

기본 구성 요소의 기본 동작을 구현한다.
다른 객체에 대한 참조는 포함되어 있지 않는다.
부분 클래스

 

- Composite

전체 클래스

Leaf를 요소로 가짐.

복수개의 Leaf, 복수개의 Composite객체를 부분으로 가질 수 있다.

 

 

장점

객체들이 모두 같은 타입으로 취급되기 때문에 새로운 클래스 추가가 용이하다.

단일 객체, 집합 객체 구분하지 않고 코드 작성이 가능하다.

 

단점

설계를 일반화 시켜 객체간의 구분, 제약이 힘들다.

 

언제 사용하나?

객체들 간에 계급 및 계층구조가 있고 이를 표현해야 할 때

클라이언트가 단일 객체와 집합객체를 구분하지 않고 동일한 형태로 사용하고자 할 때

단일 객체 처럼 행동하는 다수의 객체가 있는 경우 적용시킬 수 있다.

 

* 트리메뉴를 컴포지트 패턴을 이용해서 구성해보기

반응형

'Design Pattern' 카테고리의 다른 글

[Design Pattern] Singleton 패턴  (0) 2019.04.22
팩토리 패턴  (0) 2019.03.18
옵져버패턴  (0) 2019.03.12