Composite

김종준·2023년 5월 28일
0

디자인패턴

목록 보기
6/9

Composite

컴포지트 패턴이란 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체와 복합 객체 모두 동일하게 다루도록 한다.

출처: 컴포지트 패턴 위키

Composite UML class diagram (fixed).svg


백기선님 강의의 컴포짓 패턴 설명

그룹 전체와 개별 객체를 동일하게 처리할 수 있는 패턴

그렇기에 클라이언트는 '전체'나 '부분'이나 모두 동일한 컴포넌트로 인식할 수 있는 계층 구조를 만든다.


전체와 부분을 동일하게 다우는 경우는 어떠한 경우가 있을까?

많은 예시 중 2가지를 가져와 보면 다음과 같다.

  1. 여러 다른 물건이 있고 그 물건을 담는 가방이 있을 때, 각 물건의 가격과 가방에 든 물건들의 가격을 알아야 하는 경우
  2. 군대에서 정렬된 소대가 좌로 1보 가야 할 때, 개인도 좌로 1보 가야 하는 경우

현실과 연관시켜 생각해 본다면 위의 예시와 같이 각 부분이 동일한 행동을 했을 때 전체의 행동도 의미가 있게 되는 경우를 생각하면 될 것이다.

그래서 이러한 컴포지트 패턴은 다음과 같은 경우에 적용할 수 있다고 한다.

  1. 나무와 같은 객체 구조를 구현해야 할 때 사용

컴포지트 패턴은 공통 인터페이스를 공유하는 두 가지 기본 요소 유형들인 단순 잎(leaf)과 복합 컨테이너들을 제공한다.

컨테이너는 잎들과 다른 컨테이너들로 구성될 수 있으며, 이를 통해 나무와 유사한 중첩된 재귀 객체 구조를 구성할 수 있다.

  1. 클라이언트 코드가 단순 요소들과 복합 요소들을 모두 균일하게 처리하도록 하고 싶을 때 사용

컴포지트 패턴에 의해 정의된 모든 요소는 공통 인터페이스를 공유하며, 이 인터페이스를 사용하면 클라이언트는 작업하는 객체들의 구상 클래스에 대해 걱정할 필요가 없다.

0개의 댓글