3.1 애그리거트
상위 수준 개념을 이용해서 전체 모델을 정리하면 전반적인 관계를 이해하는데 도움이 된다.
개별 객체 수준에서 모델을 바라보면 상위 수준에서 관계를 파악하기 어렵다
도메인 객체 모델이 복잡해진다면?
-
도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하게 되고 전반적인 구조나 큰 수준에서 도메인 간의 관계를 파악하기 어렵다
-
상위 수준에서 모델이 어떻게 엮여 있는지 알아야 전체 모델을 망가뜨리지 않으면서 추가 요구사항을 모델에 반영할 수 있다
→ 세부적인 모델만 이해한 상태로는 코드 수정 꺼려짐 → 코드 변경을 회피하게 됨 😭
애그리거트
애그리거트 복잡한 모델을 관리하는 기준 제공!
장점
- 수많은 객체를 애그리거트로 묶어서 바라보면 상위 수준에서 도메인 모델 간의 관계를 파악 가능!
- 일관성을 관리하는 기준 확립 → 복잡한 도메인을 단순한 구조로
적용하기
- 한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 갖는다
주문 애그리거트
- Order, OrderLine, Orderer 같은 관련 객체를 함께 생성
- 애그리거트에 속한 구성요소는 대부분 함께 생성하고 함께 제거한다
- 한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않는다
- 애그리거트는 독립된 객체 군이며 각 애그리거트는 자기 자신을 관리할 뿐 다른 애그리거트는 관리하지 않는다
- 도메인 규칙과 요구사항으로 애그리거트 경계를 설정한다
- 도메인 규칙에 따라 함께 생성되는 구성요소는 한 애그리거트에 속할 가능성이 높다