SlideShare a Scribd company logo
Composite Pattern
&
Component Base
Develoment
Composite Pattern
 정의
객체를 트리구조로 구성하고, 개별객체와 복합객체(Composite)가 구성되고 클라이언
트에서는 두 객체를 동일하게 사용할 수 있음
 무슨 말이지????
 추상적인 상위 클래스 하나를 만들고,
그 클래스를 상속받는 다양한 자식 클래스들을 만들어
결국, 다양한 자식 클래스들을 마치 같은 종류의 클래스 다루듯이 동일
시해서 사용하겠다는 패턴.
 즉, 상위클래스의 함수를 가져다가 쓰는데 용이
Composite Pattern
 1) 객체의 구성 및 상 하위 체계를
파악한다.
 2) 파악된 객체들을 트리 구조로 설계
한다.
 3) 객체와 복합객체는 공통으로 사용
할 수 있는 메소드가 정의된 인터페이
스/추상클래스를 구현,상속한다
Composite Pattern
 클라이언트는 Component 인터페이스/추상클래스를 이용해서
개별/복합객체를 사용할 수 있다.
 객체(Leaf)와 복합객체(Composite)는 Component를 상속받
으며 해당 메소드 중 연관된 메소드만 재정의한다.
 객체는 실제 사용되는 말단 객체이며 복합객체는 하단에 또다른
객체의 집합을 구성하는 상위객체이다.
 그러나 객체나 복합객체나 이를 관리하는 부분에서는 동일하게
취급한다.
Composite Pattern
 최 상위 component class
 Virtual void list() 의 상속
 Component class에서 상속받는 Leaf class
 실질적인 객체
Composite Pattern
 Component 에서 상속받은
Composite class
 Void add() 함수 추가됨
 Leaf객체를 담기 위한 함수들
을 가지고 있음
 List(); 재귀호출
Composite Pattern
 Component의 하위 클래스인
composite, leaf 클래스의 객체 생성 후
값을 넣어줌.
Leaf :실질적 객체
Composite : leaf에 대한 관리(container)
+ 행동( list(); ) 정의
List를 호출하면 재귀호출하게됨
Composite Pattern
 장점
클라이언트를 단순화 시킴
복합개체를 사용하는지, Leaf 객체를 사용하는지 신경 쓰지 않아도 됨
새로운 종류의 Component 를 쉽게 추가 할 수 있음
 단점
지나치게 범용적 디자인이 될 수 있음
CBD (Component Based Development)
 컴포넌트 기반 개발. 시스템을 하나의 일체형으로 구축하지 않고 마치 레고 블록처럼 하
나하나씩 요소별로 부품화하여 구축하여, 소프트웨어의 생산성을 높임
 CBD 도입으로 품질 향상도모 가능. 이미 사용되고 있는 컴포넌트는 다른 SW에서 사용되
며 여러 번 테스트를 거쳤기에 그 기능성과 품질을 보증 받은 상태라 신뢰도가 높음.
 큰 시스템을 관리하기 편한 조각으로 나누고, 식별되는 명세서 별로 인터페이스를 명확히
갖는 모듈로 구현하고, 문서로 정확히 나타낸 후, 소프트웨어 빌딩블록의 집합을 만들 수
있다. 개발자들은 빌딩 블록을 조립하여 어플리케이션을 마무리 짓는다.

More Related Content

Viewers also liked

파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
Yong Joon Moon
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
hyun soomyung
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
예림 임
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
Terry Cho
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Terry Cho
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
scor7910
 

Viewers also liked (6)

파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229파이썬+함수 데코레이터+이해하기 20160229
파이썬+함수 데코레이터+이해하기 20160229
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴게임 개발에 자주 사용되는 디자인 패턴
게임 개발에 자주 사용되는 디자인 패턴
 
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
대용량 분산 아키텍쳐 설계 #2 대용량 분산 시스템 아키텍쳐 디자인 패턴
 
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
 
Proxy pattern
Proxy patternProxy pattern
Proxy pattern
 

Similar to Composite pattern

도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
JangHyuk You
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
AnselmKim
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13
Shin heemin
 
Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준
HoJun Sung
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
YoonJong Choi
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
유리 하
 
Design patterns
Design patternsDesign patterns
Design patterns
Joshua Yoon
 
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표재정 이
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
Joong Hyeon Kim
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
Bill Kim
 
C Language II
C Language IIC Language II
C Language IISuho Kwon
 
[Swift] Adapter
[Swift] Adapter[Swift] Adapter
[Swift] Adapter
Bill Kim
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Effective c++ 1~8장
Effective c++ 1~8장 Effective c++ 1~8장
Effective c++ 1~8장
Shin heemin
 
Common cartridge 요약본
Common cartridge 요약본Common cartridge 요약본
Common cartridge 요약본
Se Joung Kim
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
성연 김
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)gimslide
 
ABC: 다시 생각하는 컴포넌트
ABC: 다시 생각하는 컴포넌트ABC: 다시 생각하는 컴포넌트
ABC: 다시 생각하는 컴포넌트
Chanhee Lee
 
Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modules
Young-Hyuk Yoo
 
Uml 세미나
Uml 세미나Uml 세미나
Uml 세미나
Daniel Shin
 

Similar to Composite pattern (20)

도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기도메인 주도 설계 - 6장 도메인 객체의 생명주기
도메인 주도 설계 - 6장 도메인 객체의 생명주기
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
디자인패턴 1~13
디자인패턴 1~13디자인패턴 1~13
디자인패턴 1~13
 
Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준Head first디자인패턴 1~13_희민_호준
Head first디자인패턴 1~13_희민_호준
 
Builder, prototype, singleton pattern
Builder, prototype, singleton patternBuilder, prototype, singleton pattern
Builder, prototype, singleton pattern
 
[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java[HaU] 신입 기술 면접 준비 java
[HaU] 신입 기술 면접 준비 java
 
Design patterns
Design patternsDesign patterns
Design patterns
 
The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표The c++ programming language 10장 클래스 발표
The c++ programming language 10장 클래스 발표
 
Django View Part 1
Django View Part 1Django View Part 1
Django View Part 1
 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
 
C Language II
C Language IIC Language II
C Language II
 
[Swift] Adapter
[Swift] Adapter[Swift] Adapter
[Swift] Adapter
 
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
(자바교육/스프링교육/스프링프레임워크교육/마이바티스교육추천)#2.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)
 
Effective c++ 1~8장
Effective c++ 1~8장 Effective c++ 1~8장
Effective c++ 1~8장
 
Common cartridge 요약본
Common cartridge 요약본Common cartridge 요약본
Common cartridge 요약본
 
Effective c++chapter4
Effective c++chapter4Effective c++chapter4
Effective c++chapter4
 
전달교육(분석설계모델링)
전달교육(분석설계모델링)전달교육(분석설계모델링)
전달교육(분석설계모델링)
 
ABC: 다시 생각하는 컴포넌트
ABC: 다시 생각하는 컴포넌트ABC: 다시 생각하는 컴포넌트
ABC: 다시 생각하는 컴포넌트
 
Dagger with multi modules
Dagger with multi modulesDagger with multi modules
Dagger with multi modules
 
Uml 세미나
Uml 세미나Uml 세미나
Uml 세미나
 

Composite pattern

  • 2. Composite Pattern  정의 객체를 트리구조로 구성하고, 개별객체와 복합객체(Composite)가 구성되고 클라이언 트에서는 두 객체를 동일하게 사용할 수 있음  무슨 말이지????  추상적인 상위 클래스 하나를 만들고, 그 클래스를 상속받는 다양한 자식 클래스들을 만들어 결국, 다양한 자식 클래스들을 마치 같은 종류의 클래스 다루듯이 동일 시해서 사용하겠다는 패턴.  즉, 상위클래스의 함수를 가져다가 쓰는데 용이
  • 3. Composite Pattern  1) 객체의 구성 및 상 하위 체계를 파악한다.  2) 파악된 객체들을 트리 구조로 설계 한다.  3) 객체와 복합객체는 공통으로 사용 할 수 있는 메소드가 정의된 인터페이 스/추상클래스를 구현,상속한다
  • 4. Composite Pattern  클라이언트는 Component 인터페이스/추상클래스를 이용해서 개별/복합객체를 사용할 수 있다.  객체(Leaf)와 복합객체(Composite)는 Component를 상속받 으며 해당 메소드 중 연관된 메소드만 재정의한다.  객체는 실제 사용되는 말단 객체이며 복합객체는 하단에 또다른 객체의 집합을 구성하는 상위객체이다.  그러나 객체나 복합객체나 이를 관리하는 부분에서는 동일하게 취급한다.
  • 5. Composite Pattern  최 상위 component class  Virtual void list() 의 상속  Component class에서 상속받는 Leaf class  실질적인 객체
  • 6. Composite Pattern  Component 에서 상속받은 Composite class  Void add() 함수 추가됨  Leaf객체를 담기 위한 함수들 을 가지고 있음  List(); 재귀호출
  • 7. Composite Pattern  Component의 하위 클래스인 composite, leaf 클래스의 객체 생성 후 값을 넣어줌. Leaf :실질적 객체 Composite : leaf에 대한 관리(container) + 행동( list(); ) 정의 List를 호출하면 재귀호출하게됨
  • 8. Composite Pattern  장점 클라이언트를 단순화 시킴 복합개체를 사용하는지, Leaf 객체를 사용하는지 신경 쓰지 않아도 됨 새로운 종류의 Component 를 쉽게 추가 할 수 있음  단점 지나치게 범용적 디자인이 될 수 있음
  • 9. CBD (Component Based Development)  컴포넌트 기반 개발. 시스템을 하나의 일체형으로 구축하지 않고 마치 레고 블록처럼 하 나하나씩 요소별로 부품화하여 구축하여, 소프트웨어의 생산성을 높임  CBD 도입으로 품질 향상도모 가능. 이미 사용되고 있는 컴포넌트는 다른 SW에서 사용되 며 여러 번 테스트를 거쳤기에 그 기능성과 품질을 보증 받은 상태라 신뢰도가 높음.  큰 시스템을 관리하기 편한 조각으로 나누고, 식별되는 명세서 별로 인터페이스를 명확히 갖는 모듈로 구현하고, 문서로 정확히 나타낸 후, 소프트웨어 빌딩블록의 집합을 만들 수 있다. 개발자들은 빌딩 블록을 조립하여 어플리케이션을 마무리 짓는다.