CHAPTER 14 컴퍼지트 패턴 - daybreak6/java-design-pattern GitHub Wiki

컴퍼지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용하다.
그리고 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있다.

image

  • Component:구체적인 부분,즉 Leaf 클래스와 전체에 해당하는 Composite 클래스에 공통 인터페이스를 정의한다.
  • Leaf:구체적인 부분 클래스로 Composite 객체의 부품으로 설정한다.
  • Composite:전체 클래스로 복수 개의 Component를 갖도록 정의한다. 그러므로 복수 개의 Leaf, 심지어 복수 개의 Composite 객체를 부분으로 가질 수 있다.

image

  • ComputerDevice 클래스는 Component 역할을 한다.
  • Keyboard 클래스, Body 클래스, Monitor 클래스는 각각 Leaf 역할을 한다.
  • Computer 클래스는 Composite 역할을 한다.