CHAPTER 14 컴퍼지트 패턴 - daybreak6/java-design-pattern GitHub Wiki
컴퍼지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용하다.
그리고 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있다.
- Component:구체적인 부분,즉 Leaf 클래스와 전체에 해당하는 Composite 클래스에 공통 인터페이스를 정의한다.
- Leaf:구체적인 부분 클래스로 Composite 객체의 부품으로 설정한다.
- Composite:전체 클래스로 복수 개의 Component를 갖도록 정의한다. 그러므로 복수 개의 Leaf, 심지어 복수 개의 Composite 객체를 부분으로 가질 수 있다.
- ComputerDevice 클래스는 Component 역할을 한다.
- Keyboard 클래스, Body 클래스, Monitor 클래스는 각각 Leaf 역할을 한다.
- Computer 클래스는 Composite 역할을 한다.