조금씩 읽기 도메인 구동 설계 제니부 모델 구동 설계의 구성 요소 제5장 소프트웨어로 표현된 모델 5(엔티티 모델)

엔티티 모델



엔티티에게 가장 기본적인 책임은 행동이 명확하고 예측 가능하도록 연속성을 확립하는 것입니다. 이것이 제일 잘 되는 것은 불필요한 것이 없는 상태가 유지되고 있을 때다. 속성이나 행동에 집중하는 것보다는, 엔티티 오브젝트의 정의를, 가장 본질적인 특징에까지 깎아내는 것. (제2부 제5장부터)

"설계 및 프로세스"에서 읽은 것처럼 DDD는 애자일 프로세스에서 개발한다고 가정합니다.

이터레이티브(반복적)로 모델을 성장시킬 수 있으므로, 위와 같이, 우선 엔티티를 가장 본질적인 특징에까지 깎아내는 것도 가능하게 됩니다.

엔티티의 본질적인 특징이란


  • 엔티티를 식별하는 것
  • 엔티티를 검색하고 일치시키는 데 일반적으로 사용되는 것
  • 그 개념에 대한 본질적인 행동과 그 행동에 필요한 속성

  • 위에서 엔티티와 그 속성을 찾아내고, 그 속성이 다른 엔티티나 값 객체로 이동할 수 없는지를 검토합니다.

    "깎아 떨어뜨린다"는 것은 그런 것이군요.

    설계·개발에 있어서, 필요한 것을 덧붙여 가는 것은 보통의 일입니다만, 그것을 일부러 깎아내려 가는 것에 DDD의 진수가 있는 것 같은 생각이군요.





    예를 들면, 주문의 예로 말하면(전혀 속성이 부족합니다만··· 어디까지나 예로서), 우선 상기와 같이 모델링을 한 후에, 깎아내리는 작업을 합니다.
  • 주문 ID는 엔티티를 식별하기 때문에 남아 있습니다.
  • 배송지 주소는 문의가 있었을 경우에 검색에 사용하므로 남깁니다.
  • 상품명으로 주문을 검색하지 않으므로 이동합니다.
  • 총 금액으로 주문을 검색하지 않으므로 이동합니다.

  • 그래서 이렇게 되었습니다.


    주문의 합계 금액도 주문의 본질적인 행동입니다만, 주문 합계 금액이라고 하는 모델을 나누었으므로 행동을 그쪽으로 이동하고 있습니다.

    상품도 상품 코드로 식별하고 있으므로, 여기의 엔티티의 검토도 필요하게 되는군요.

    내일은 실장면을 보고 싶습니다.

    좋은 웹페이지 즐겨찾기