반응형
컴포지트 패턴
복합 객체와 단일 객체를 동일하게 취급할 때 사용하는 패턴
객체들의 관계를 트리 구조로 구성하여 전체-부분 관계로 표현할 수 있다.
Component
복합 객체와 단일 객체가 동일하게 가지는 속성과 기능을 가진 인터페이스
Leaf
컴포지트 패턴에서 단일 객체를 의미한다.
트리구조에서 Composite의 자식 역할을 한다.
Composite
컴포지트 패턴에서 복합 객체로 Component 인터페이스를 통해 자식 객체를 관리한다.
컴포지트 패턴의 가장 대표적인 예가 폴더-파일 구조이다.
전체 코드
import java.util.ArrayList;
import java.util.List;
public class Composite {
public static void main(String[] args){
Folder root = new Folder();
root.add(new File());
root.add(new Folder());
for( Component component : root.child ){
component.operation();
}
}
}
interface Component{
void operation();
}
class File implements Component{
@Override
public void operation() {
System.out.println("This is File");
}
}
class Folder implements Component{
List<Component> child = new ArrayList<>();
@Override
public void operation() {
System.out.println("This is Folder");
}
public void add(Component component){
child.add(component);
}
public void remove(){
child = new ArrayList<>();
}
public List<Component> getChild(){
return child;
}
}
해당 코드에서 File이 Leaf역할, Folder가 Composite 역할을 하는 것을 알 수 있다.
참고
https://ko.wikipedia.org/wiki/컴포지트_패턴
https://dailyheumsi.tistory.com/193
https://en.wikipedia.org/wiki/Composite_pattern
반응형
'Clean Code' 카테고리의 다른 글
[Design Pattern] 구조 패턴 - 브리지 패턴 (0) | 2022.03.12 |
---|---|
[Design Pattern] 구조 패턴 - 어댑터 패턴 (0) | 2022.03.08 |
[Design Pattern] 구조 패턴 - 데코레이터 패턴 (0) | 2022.03.03 |
[Design Pattern] 생성 패턴 - 싱글톤 패턴 (0) | 2022.03.03 |
[Design Pattern] 생성 패턴 - 프로토 타입 패턴 (0) | 2022.03.03 |