sitelink1 | http://blog.naver.com/gamediz/20042595126 |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
1. 복합체(Composite)
1) 정의
부분-전체 계층을 나타내기 위해 복합 객체를 트리 구조로 만든다. 컴포지트 패턴은 클라이언트가 개별적 객체와 복합객체 모두를 동일하게 다루도록 한다.. |
복합체 패턴은 개체와 개체군을 동일하게 취급하여 다루기 위한 패턴이다.
하나의 개체와 하나의 개체군을 함께 다루기 위해서는 어떻게 해야 할까? 라는 필요에 의해서 만들어진 패턴이라고 볼 수 있다.
2) 예제
다음과 같이 A, B, C, D라는 객체가 있다.
이것들을 컨트롤 하는 과정을 통해 복합체를 설명해보겠다.
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) 게임에서의 활용
스타크래프트를 보면 유닛을 하나씩 컨트롤 할 수도 있지만, 드래그 하여 다수의 개체를 선택하여 하나를 컨트롤 할 때와 같이 컨트롤 할 수 있는데 이런것도 복합체의 예이다.
비슷한 예로 윈도우 탐색기에서도 파일/폴더/드라이브는 사실 상위, 하위 구조가 나뉘어져 있는 다른 객체인데, 한꺼번에 복사를 하거나 이동을 하는 등의 기능이 사용되는데 이것도 복합체의 예이다.
울티마 온라인에서 가방이라는 요소가 있는데 가방안에 가방을 넣고 그 가방안에 또 가방을 넣고 그 가방안에 또 가방을 넣는 등 가방이라는 객체가 계속해서 겹칠 수 있고 유저는 가장 바깥에 있는 가방하나를 이동하면 그 안에 있는 모든 가방들이 딸려 이동되는 데 이것도 복합체의 한 예라고 할 수 있다.
이 처럼 복합체는 보기에 매우 단순해 보이는 패턴이지만, 굉장히 많은 곳에서 응용되는 패턴이다.
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
23 | 비즈니스 패턴 | 황제낙엽 | 2008.04.10 | 158 |
22 | SOA Service Benefit Pattern | 황제낙엽 | 2008.04.10 | 129 |
21 | 패턴 입문가에게 권하는 책 - Head First Design Patterns (스토리가 있는 패턴 학습법) | 황제낙엽 | 2007.11.25 | 240 |
20 | 디자인 패턴(GoF) 카다로그 | 황제낙엽 | 2007.11.25 | 160 |
19 | 해석자(Interpreter) | 황제낙엽 | 2007.11.25 | 205 |
18 |
책임연쇄(Chain of Responsibility) 패턴
![]() | 황제낙엽 | 2007.11.25 | 205 |
» |
복합체(Composite) 패턴
![]() | 황제낙엽 | 2007.11.25 | 180 |
16 |
Singleton(싱글턴) 패턴
![]() | 황제낙엽 | 2007.11.25 | 148 |
15 | Prototype(프로토 타입) 패턴 | 황제낙엽 | 2007.11.25 | 242 |
14 | Builder(빌더) 패턴 | 황제낙엽 | 2007.11.25 | 311 |
13 |
Factory Method(팩토리 메소드) 패턴
![]() | 황제낙엽 | 2007.11.25 | 310 |
12 |
Abstract Factory(추상 팩토리) 패턴
![]() | 황제낙엽 | 2007.11.25 | 185 |
11 |
디자인패턴의 개요&기본 개념 정리
![]() | 황제낙엽 | 2007.11.25 | 128 |
10 | 디자인패턴과 리팩토링의 관계 | 황제낙엽 | 2007.11.20 | 209 |
9 | Template Method Pattern | 황제낙엽 | 2007.06.29 | 169 |
8 | The Facade Pattern | 황제낙엽 | 2007.05.23 | 131 |
7 | Factory Pattern | 황제낙엽 | 2007.04.21 | 132 |
6 | Decorator Pattern | 황제낙엽 | 2007.04.21 | 133 |
5 |
해드퍼스트 디자인패턴 샘플 예제 모음
![]() | 황제낙엽 | 2007.04.11 | 185 |
4 | Observer Pattern | 황제낙엽 | 2007.04.05 | 139 |