구성
- 한 클래스가 다른 클래스의 객체를 포함하는 방식으로 관계를 형성
- has-a 관계
특징
- 유연성 : 클래스 간의 강한 결합을 피할 수 있어 유연한 설계와 유지 관리가 가능
- 코드 재사용성 : 다른 클래스의 인스턴스를 포함하여 새로운 클래스를 만들 수 있기 때문에 코드의 재사용성이 높다
- 객체 간의 독립성 : 두 클래스가 독립적으로 존재 가능, 다른 클래스의 미치는 영향을 최소화
사용되는 상황
- 복합 객체 생성 : 객체가 다른 객체를 포함하는 경우 구성을 사용하여 객체 생성 가능
- 클래스 간의 관계 표현 : 클래스 간의 has-a관계를 표현할 때 사용
- 복잡한 기능 구현 : 작은 단위로 분리하여 코드 구성 가능
주의할 점
- 의존성 관리 : 의존성을 관리하여 객체 간의 순환 참조나 복잡한 의존성 방지
- 객체 소유 관리 : 포함된 객체의 생명주기를 주인 객체와 함께 관리하여 객체의 메모리 누수를 방지
- 너무 많은 중첩 : 과도한 구성관계는 코드의 복잡성 증가, 조절을 해야함