닉네임이 왜 필요해 2023. 8. 20. 01:24

도메인 서비스

도메인 서비스가 나오게된 배경

  • 한 애그리거트로 기능을 구현할 수 없을 때 사용하는 기법
  • 한 애그리거트에 넣기 애매한 도메인 기능을 억지로 특정 애그리거트에 구현하면 안된다.
  • 외부에 대한 의존성이 높아짐

도메인 서비스

  • 하나 이상의 애그리거트가 연관 관계를 통해서 하나의 비즈니스를 처리할때 사용된다.
  • 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)};
		...
}
  • 외부 서비스에 요청하는 부분을 만들기도함.
  • 도메인 서비스의 패키지 위치
    • Domain 패키지에 존재해야함

기억해야할 사항 (응용계층의 service 역할)

  • 도메인 객체간 흐름제어
  • 트랜잭션
  • 접근제어 이벤트 발행