2017-03-21 1 views
0

DDD에 관한 Eric Evans의 책에서 엔티티가 다른 엔티티 (집합체의 루트)로만 이해 될 수 있다면 엔티티를 "일반"엔티티 (AR의 멤버)로 만드십시오.집계의 루트로 만들거나 집계 루트의 멤버로 유지하기로 결정하십시오.

내 질문 : 정확히 "자체적으로 이해할 수있는"것은 무엇을 의미합니까? 엔티티가 독자적으로 이해 될 수 있는지 여부를 알기 위해 어떤 질문을해야합니까?

+0

자체에서 만들거나 다른 컨텍스트에서 만들어야하는 경우. 또는 해당 엔터티를 직접 수정하면 모든 불변식이 유지됩니다. –

+0

안녕하세요. Constantin, 답변 섹션에 귀하의 의견을 넣어 주실 수 있습니까? 아, 또 다른 관련 질문 : AR에서 작동하면 다른 AR (다른 유형)의 인스턴스가 생성 될 수 있습니까? –

+0

어쩌면이 두 번째 질문에 대답 도움이 될 것입니다 : http://udidahan.com/2009/06/29/dont-create-aggregate-roots/ –

답변

0

내 질문 : 정확히 "자체적으로 이해할 수있는"것은 무엇을 의미합니까?

독자적으로 만들 수있는 경우 또는 을 다른 컨텍스트로 만들어야합니다.

엔티티 자체에서 이해할 수 있는지 여부를 묻는 질문은 무엇입니까?

"내가 직접 사실, 나는 다른 관련 엔티티의 컬렉션에 계산에 체크 (즉 if 문을) 할 필요가 그 실체를 수정하거나 경우 모든 비즈니스 불변을 유지합니까 특정 비즈니스 규칙이 확인되었는지 확인하십시오. "

또 다른 질문은 다음과 같습니다. "모두 비즈니스 규칙을 확인하려면이 엔터티의 모든 정보를 가지고 있습니까?"

0

다른 다음은 하지 아칸소입니다의 일부가 아닌 다른 존재 이유가없는 클래스가있는 경우. 전형적인 예는 OrderOrderitem입니다. 라이프 사이클을 계속 추적하고 싶지 않은 경우는 OrderItem입니다. 사실 OrderItem을 값 객체로 모델링하고 싶을 것입니다. 귀하의 도메인에서 이러한 모든 개념이 반드시 분명하게 나타나야하는 것은 아닙니다.

Udi's post의 경우 : 다른 AR에서 AR을 만들 수 있다는 것은 그 AR이 제한된 컨텍스트의 일부인 것에 달려 있습니다. 또한 요즘에는 도메인 내에서 이벤트를 제기하는 것이 아니라 내 도메인에서 이벤트를 반환하는 것을 선호합니다.

관련 문제