도메인 서비스
도메인 서비스가 나오게된 배경
- 한 애그리거트로 기능을 구현할 수 없을 때 사용하는 기법
- 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안된다.
- 외부에 대한 의존성이 높아짐
도메인 서비스
- 하나 이상의 애그리거트가 연관 관계를 통해서 하나의 비즈니스를 처리할때 사용된다.
- Domain Service 를 Domain에 주입해서 처리하자!
public class Order{
public void calculateAmounts(
DiscountCalculationService disCalSvc, MemberGrade grade
){
Money totalAmounts = getTotalAmount();
Money discountAmounts = disCalSvc/calculateDscountAmounts(this.orderLines, this.coupons, grade)};
...
}
- 외부 서비스에 요청하는 부분을 만들기도함.
- 도메인 서비스의 패키지 위치
기억해야할 사항 (응용계층의 service 역할)
- 도메인 객체간 흐름제어
- 트랜잭션
- 접근제어 이벤트 발행