이전 글의 어댑터, 퍼싸드 패턴과 함께 프로그램의 뼈대/골격이 될 만한 패턴이다
컴포지트: 개별이 될 수도 있고 집합이 될 수도 있는 객체
Part-Whole Hierarchy를 표현하고 싶을 때, 객체들을 트리구조로 구성할 수 있다.
Client가 개개의 객체와 그룹 객체를 동일하게 취급할 수 있게 만든다.
컴포지트 객체는 개별 아이템이나 복합체로 구성될 수 있다
객체는 모두 유사한 기능을 갖기에 객체 그룹을 만들어 단일 객체를 조작할 수 있다.
리프 노드와 중간 노드로 구성된 트리 구조이다.
컴포넌트(Figure) / 리프(Rectangle, Line, Circle) / 컴포지트(Group) / 클라이언트
powerful한 패턴 / 객체 / 클래스 / 동기
1) 컴퓨터 견적
2) Bank/Teller Example
여러 드로잉 프로그램에서, 여러 모양의 도형을 그리고자 할때, 클래스 수가 조합수로 증가한다.
이에, 추상(도형의 종류)과 구현(드로잉 프로그램)사이에 강한 결합이 발생한다.
이에, 추상을 구현으로부터 분리하여 독립적으로 변하게 한다.
브리지 패턴을 이용해 추상과 구현이 각각 다양할 수 있게 만든다
브리지 패턴 적용 과정
실행 시에 구현 객체 하나만 존재하며, 추상클래스와 구현 클래스가 컴파일 시에 고정된다
실행 시 추상 부분 객체와 구현부분 객체 두개가 따로 존재하여, 그 두 객체의 연결이 바뀔수 있기에, 상속관계보다 더욱 유연하다
디바이스 드라이버
DB; jdbc