객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴
위에서 예로 들었던 Directory와 File만한게 없을 것 같아요.
Unix 수업을 들을 때, Directory와 File 모두 File로 취급한다는 내용이 기억이 납니다.
ls 명령어를 쓰면 일괄적으로 출력되는데 이 기능을 예시로 작성해보았습니다.
조금 복잡해보이지만 출력할 때 계층적으로 나타내고 싶어서 print를 Overload해서 두 가지로 만들었습니다.
위와 같은 이유로 print를 두 가지로 만들었습니다.
Directory 올빼미(Depth: 1)
Directory 오리(Depth: 2)
File photo1.jpg
File photo2.jpg
File photo3.jpg
File test01.txt
File test02.txt
File test03.txt
위처럼 계층적으로 출력됩니다.
Directory(Composite) 또한 Node(Component)를 구현하므로써 File(Leaf)에 Directory도 저장할 수 있으며, print로 한 번에 출력할 수 있습니다.
위에서 말한 전체와 부분을 구분하지 않고 동일한 인터페이스 이용하기 + 계층 표현을 확인할 수 있었습니다.
참고
감사합니다.
Text by Chaelin. Photographs by Chaelin, Unsplash.