[디자인 패턴] - Composite
by 볼빵빵오춘기Composite 패턴
"부분-전체(Part-Whole)" 계층 구조를 구성할 때, 단일 객체와 복합 객체를 동일하게 취급할 수 있게 해주는 디자인 패턴이다.
예시 코드
Component root = new Folder("root");
root.add(new File("hello.txt"));
Folder subFolder = new Folder("sub");
subFolder.add(new File("world.txt"));
root.add(subFolder);
root.print(); // 폴더-파일 구조를 계층적으로 출력
Composite 패턴의 장점
단일 객체와 복합 객체를 동일하게 처리
클라이언트는 객체가 단순한지 복합적인지 신경 쓰지 않고 사용 가능하다.
재귀적 구조 표현에 적합
트리 구조처럼 자기 자신을 포함할 수 있는 구조 표현 가능하다.
유지보수 용이 & 확장성 뛰어남
새로운 구성요소 추가 시 기존 코드 변경 없이 확장 가능하다.
일관된 인터페이스 제공
클라이언트 코드가 단순해진다.(다형성 활용)
Composite 패턴의 단점
설계가 복잡해질 수 있음
단순한 구조에 사용하면 오히려 복잡도 증가
객체 간 관계 이해 어려움
트리 구조가 깊어지면 디버깅/테스트가 어려워짐
강한 타입 제어 어려움
복합 객체와 단일 객체가 동일하게 처리되므로, 특정 타입 제어가 애매할 수 있음
Composite 패턴은 언제 사용하나?
트리 구조 표현이 필요한 경우
폴더-파일 구조, 조직도, UI 구성요소 트리 등
클라이언트가 복합 객체와 단일 객체를 구분하지 않고 다뤄야 할 때
재귀적으로 구조를 구성해야 할 때
GUI 구성, HTML DOM, 메뉴 시스템
정리하자면
Composite 패턴은 트리 구조의 객체를 동일한 방식으로 처리하기 위해 사용하는 패턴이다.
'👩🏻💻 About 프로그래밍 > Spring, Spring boot' 카테고리의 다른 글
[디자인 패턴] - Facade (0) | 2025.04.09 |
---|---|
[디자인 패턴] - Decorator (0) | 2025.04.07 |
[디자인 패턴] - Bridge (0) | 2025.04.07 |
[디자인 패턴] - Adapter (0) | 2025.04.07 |
[디자인 패턴] - Singleton (0) | 2025.03.25 |
블로그의 정보
Hello 춘기's world
볼빵빵오춘기