디자인패턴 복합체(Composite) 패턴

황제낙엽 2007.11.25 11:40 조회 수 : 358 추천:99

1. 복합체(Composite)

1)    정의

부분-전체 계층을 나타내기 위해 복합 객체를 트리 구조로 만든다. 컴포지트 패턴은 클라이언트가 개별적 객체와 복합객체 모두를 동일하게 다루도록 한다..

 

복합체 패턴은 개체와 개체군을 동일하게 취급하여 다루기 위한 패턴이다.

하나의 개체와 하나의 개체군을 함께 다루기 위해서는 어떻게 해야 할까? 라는 필요에 의해서 만들어진 패턴이라고 볼 수 있다.

 

2)    예제

다음과 같이 A, B, C, D라는 객체가 있다.

이것들을 컨트롤 하는 과정을 통해 복합체를 설명해보겠다.

 

 npee8_gamediz.jpg

1 ~ 4는 객체 컨트롤 과정이다.

1번은 A, B, C, D라는 객체를 놓았다. (아무 작용없는 상태)….

2번은 B를 골라서 양방향으로 쭉 늘였다. 이것은 객체 하나에 대한 컨트롤이다.

3번은 A, B, C, D 객체를 그룹화 해서 한방향으로 쭉 끌었더니 한꺼번에 커졌다.

4번은 B, C, D는 그룹이고, A는 단일 객체인데 이 것들을 한꺼번에 선택하여 이동시키거나 할 수 있다는 것을 보여주는 그림이다.

 

복합체는 3번과 4번의 과정을 행할 수 있도록 만들어 주는 패턴이라고 할 수 있다.

크기, 색깔, 모양이 다른 A, B, C, D 4개의 객체를 그룹화 하여 컨트롤 해줄 수도 있고, 단일 객체로 개별 컨트롤도 가능하며, 더불어 단일객체와 선택되어 있는 객체를 함께 컨트롤 할 수도 있는 방식 … 그런것이 바로 복합체 패턴이라고 할 수 있다.

 

한쪽은 그룹에 대한 추상화, 한쪽은 도형에 대한 추상화를 추상화를 담당하고 그룹을 옮기면 그룹안에 있는 물건들도 재배열되는 구조를 가졌다고 할 수 있다.

 

3)    게임에서의 활용

스타크래프트를 보면 유닛을 하나씩 컨트롤 할 수도 있지만, 드래그 하여 다수의 개체를 선택하여 하나를 컨트롤 할 때와 같이 컨트롤 할 수 있는데 이런것도 복합체의 예이다.

 

비슷한 예로 윈도우 탐색기에서도 파일/폴더/드라이브는 사실 상위, 하위 구조가 나뉘어져 있는 다른 객체인데, 한꺼번에 복사를 하거나 이동을 하는 등의 기능이 사용되는데 이것도 복합체의 예이다.

 

울티마 온라인에서 가방이라는 요소가 있는데 가방안에 가방을 넣고 그 가방안에 또 가방을 넣고 그 가방안에 또 가방을 넣는 등 가방이라는 객체가 계속해서 겹칠 수 있고 유저는 가장 바깥에 있는 가방하나를 이동하면 그 안에 있는 모든 가방들이 딸려 이동되는 데 이것도 복합체의 한 예라고 할 수 있다.

 

이 처럼 복합체는 보기에 매우 단순해 보이는 패턴이지만, 굉장히 많은 곳에서 응용되는 패턴이다.

번호 제목 글쓴이 날짜 조회 수
64 [ChatGPT] 소프트웨어 품질 관리에서 필요로 하는 소양 황제낙엽 2025.05.02 242
63 [Selenium] 크롬 브라우저 실행 화면을 출력하거나 감추는 방법 황제낙엽 2024.05.05 377
62 [Selenium] 페이지 이동 함수 황제낙엽 2024.05.05 346
61 [Selenium] Chrome 실행 자동화 file 황제낙엽 2024.05.03 1498
60 [Selenium] MS Edge 실행 자동화(RPA, Robotic Process Automation) file 황제낙엽 2024.05.02 701
59 [Selenium] Warning : Unable to find CDP implementation matching 124 황제낙엽 2024.05.02 1062
58 프로젝트 WBS 예제 (Microsoft Project 2013) secret 황제낙엽 2021.05.12 0
57 WBS (Work Breakdown Structure) 황제낙엽 2020.06.18 286
56 프로젝트 진행 절차 file 황제낙엽 2020.05.21 405
55 BDD (Behaviour-Driven Development) 황제낙엽 2020.04.02 358
54 요구사항 개발과 요구사항 관리 요약(요구사항기술서 샘플) file 황제낙엽 2019.07.07 425
53 뒤늦게 정리하는 UML (Unified Modeling Language) 요약 file 황제낙엽 2017.03.29 767
52 StarUML™의 숨은 재미있는 기능 황제낙엽 2017.03.29 2481
51 The Facade Pattern file 황제낙엽 2017.01.04 655
50 와블스 프로세스(Warbles Process) 황제낙엽 2016.07.17 550
49 비 개발자 출신이 스크럼 마스터가 될 수 있는가? 황제낙엽 2015.06.25 621
48 디자인패턴[Observer 패턴] 황제낙엽 2013.10.18 500
47 PMBOK 5판 이해관계자 관리의 이해 [1] file 황제낙엽 2013.08.23 1650
46 Validation and Verification file 황제낙엽 2013.08.23 432
45 이해관계자의 관리/이해관계자 분석 황제낙엽 2013.08.23 670