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에서 사용되
며 여러 번 테스트를 거쳤기에 그 기능성과 품질을 보증 받은 상태라 신뢰도가 높음.
큰 시스템을 관리하기 편한 조각으로 나누고, 식별되는 명세서 별로 인터페이스를 명확히
갖는 모듈로 구현하고, 문서로 정확히 나타낸 후, 소프트웨어 빌딩블록의 집합을 만들 수
있다. 개발자들은 빌딩 블록을 조립하여 어플리케이션을 마무리 짓는다.