7.1 여러 애그리거트가 필요한 기능

도메인 영역 코드 작성 시, 한 애그리거트로 기능을 구현할 수 없을 경우 존재.

예시) 결제 금액 계산 로직

이 상황에서 실제 결제 금액 계산하는 주체는 어떤 애그리거트일까?

생각해 볼 수 있는 방법은 주문 애그리거트가 필요한 데이터를 모두 가지도록 한 뒤 할인 금액 계산 책임을 주문 애그리거트에 할당하는것.

public class Order {
	...
	private Orderer orderer;
	private List<OrderLine> orderLines;
	private List<Coupon> usedCoupons;

	private Money calculatePayAmounts() {
		// orderLines의 각 상품에 대해 쿠폰 적용해 할인 금액 계산
		// 회원 등급에 따라 할인 금액 계산
		// 실제 결제 금액 계산
	}
}

여기서 결제 금액 계산 로직이 주문 애그리거트 책임이 맞을까?

이렇게 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안됨.