컴포지트 패턴(Composite Pattern)

seunghyun lee·2022년 7월 26일
0

Computer Science

목록 보기
14/19
post-thumbnail

컴포지트 패턴

  • 구조 패턴
  • 객체들을 트리 구조로 구성하여 그릇 객체와 내용물 객체를 동일하게 취급할 수 있도록 만들기 위한 패턴이다.
  • 단일 객체와 집합 객체로 구성된 하나의 일관된 클래스를 정의한다.

컴포지트 패턴의 Object

Base Component

  • 클라이언트가 composition 내의 Object들을 다루기 위해 제공되는 인터페이스이다.
  • 인터페이스 또는 추상 클래스로 정의된다.
  • 모든 Object들에게 공통되는 메소드를 정의해야 한다.

Leaf

  • composition 내 Object의 행동을 정의한다.
  • Base Component를 구현한다.
  • 다른 Component에 대해 참조를 가지지 않는다.

Composite Object

  • Leaf Object로 이루어져 있으며 Base Component 내 명령들을 구현한다.

컴포지트 패턴 예시

  • Entry 객체는 File과 Directory를 동일 취급 하기 위한 공통 인터페이스를 정의.
  • Directory는 그릇으로 또 다른 디렉토리 또는 파일을 포함하고 관리 할 수 있는 메서드를 구현

컴포티트 패턴 장단점

장점

  • 객체들이 모두 같은 타입으로 취급되어 새로운 클래스 추가가 용이하다.
  • 단일 객체 및 집합 객체를 구분하지 않고 코드를 작성하여 사용자 코드가 단순해진다.
  • 런타임 단일 객체와 집합 객체를 구분하지 않고 일관된 프로그래밍이 가능하다.
  • 객체들 간에 계급 및 계층구조가 있을 때 유용하다.

단점

  • 설계가 지나친 범용성을 가진다.
  • Composite의 구성 요소에 제약을 가하기 힘들다



참고

https://jhtop0419.tistory.com/99
https://lktprogrammer.tistory.com/49

0개의 댓글