티스토리 뷰
Composite Pattern - 디자인 패턴
참고서적 : Head First Design Pattern
소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html
패턴 정의 #11 - 컴포지트(composite) Pattern
객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조를 만들 수 있습니다.
이 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있습니다.
트리 구조를 살펴보면 노드(node)와 잎(leaf)으로 구성되어 있는 것을 알 수 있습니다.
이러한 노드와 잎을 한가지 형태로 표현할 수 있도록 구성되어 있는 것이 컴포지트 패턴입니다.
그래서 부분-전체 계층구조를 생성할 수 있다고 이야기 합니다.
이렇게 하기 위해서 기본적으로 컴포지트 컴포넌트에는 노드에서 하는 역할과 잎에서 하는 역할이 모두 포함되어야 합니다.
클래스 다이어그램을 살펴보면 Leaf와 Composite가 Component를 구현하고 있는데, 서로 필요한 메소드만 구현한 것을 알 수 있습니다.
- 클라이언트에서는 Component 인터페이스를 이용하여 복합 객체 내의 객체들을 조작할 수 있습니다.
- Component에서는 복합객체 내에 들어있는 모든 객체들에 대한 인터페이스를 정의합니다.
즉, 노드 뿐만 아니라 잎에 대한 메소드까지 정의하는 겁니다.
- Component에서 add(), remove(), getChild() 및 몇가지 작업에 대한 기본 행동을 정의할 수도 있습니다.
'XML Developer > 디자인 패턴' 카테고리의 다른 글
[디자인 패턴#12] 스테이트 패턴 (0) | 2008.01.21 |
---|---|
[디자인 패턴#10] 이터레이터 패턴 (0) | 2007.10.17 |
[디자인 패턴#9] 템플릿 메소드 패턴 (0) | 2007.09.05 |
[디자인 패턴#8] 어댑터와 퍼사드 패턴 (0) | 2007.08.10 |
[디자인 패턴#7] 커맨드 패턴 (0) | 2007.06.01 |