도메인 영역 코드 작성 시, 한 애그리거트로 기능을 구현할 수 없을 경우 존재.
예시) 결제 금액 계산 로직
이 상황에서 실제 결제 금액 계산하는 주체는 어떤 애그리거트일까?
생각해 볼 수 있는 방법은 주문 애그리거트가 필요한 데이터를 모두 가지도록 한 뒤 할인 금액 계산 책임을 주문 애그리거트에 할당하는것.
public class Order {
...
private Orderer orderer;
private List<OrderLine> orderLines;
private List<Coupon> usedCoupons;
private Money calculatePayAmounts() {
// orderLines의 각 상품에 대해 쿠폰 적용해 할인 금액 계산
// 회원 등급에 따라 할인 금액 계산
// 실제 결제 금액 계산
}
}
여기서 결제 금액 계산 로직이 주문 애그리거트 책임이 맞을까?
이렇게 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안됨.