자바/자바 자료실

[디자인 패턴] 10. 컴포지트 패턴 ( Composite Pattern )

Chipmunks 2018. 12. 19.
728x90

컴포지트 패턴 ( Composite Pattern )

같은 인터페이스로 객체가 독립적으로 다뤄지거나 객체의 집합으로 다뤄지는, 객체 계층의 생성을 도와줍니다.


클래스 다이어그램


Leaft 와 Composite가 같은 Component 클래스를 상속받는다.

Composite 클래스는 Component 클래스를 자식으로 갖는다.


컴포지트 패턴을 구현하는 두 가지 방법

1. Transparency를 위한 구현


모든 컴포넌트가 동일하게 다뤄줘야 한다는 것을 강조한다. 그러나, Leaf 클래스의 입장에서 add, remove, getChild 메소드가 필요 없기 때문에 보안 상의 문제가 있다.


2. Safety를 위한 구현

Leaft 클래스에 Child 연산을 하면, 컴파일 시에 오류가 난다.

그러나, Composite 와 다른 인터페이스를 가져, 투명성을 잃어버린다.


댓글