DDD와 집계에 대해 읽은 후에 모든 것을 집계에 적용하려고합니다. 거의 모든 블로그 게시물이나 튜토리얼 등에서 같은 예를 사용하는 것은 도움이되지 않습니다 : 주문과 주문.한 개체가 집계의 일부인지 여부를 결정하는 방법
개체가 자체적으로 살아갈 수 있다는 것은 무엇을 의미합니까? 도메인을 모델링 할 때 자체적으로 살아갈 수 없다는 의미입니까 아니면 실제 세계에서 자체적으로 존재하지 않는다는 것을 의미합니까?
나는 사용자가 운전을 추적 할 수있는 응용 프로그램을 만들고 있습니다. 같은, 기간, 거리 등등.
내가 사람을 모델링의 목적으로StudentDriver
클래스를 만든
은 "책을"모델링을위한 DrivingLog
, 각 "라인"그/그녀가 구동 될 때 사용자가 만드는 것이/기록을 모델링 DrivingRecords
. 여기에는 지속 시간, 거리 등이 포함됩니다.
이제 질문은 : StudentDriver
이 모든 클래스의 총계 루트로 간주되고 모든 작업이 StudentDriver
을 통과해야합니까? 아니면 StudentDriver
이 루트이고 DrivingLog
이 다른 루트가되어야하고 StudentDriver
과 DrivingLog
이 서로 연관되어 있어야합니까?
어떻게 결정 하시겠습니까? 이 예제와 일반적으로 모두.
+1 멋진 답변 –
그래서 클라이언트 (사용자 등)가 프로그램의 다양한 부분을 더 쉽게 이해할 수 있도록 단계별 패턴을 적용하는 것이 더 낫습니다. 이 경우 운전 기록은 drivingrecord의 총계 일 수 있지만 학생 드라이버는 세 개의 모든 수업에 대해 집계가 필요하지 않습니까? 이 두 가지 집합 루트를 가질 때 클라이언트는 두 엔티티를 쉽게 이해할 수 있습니다. 이 올바른지? 아니면 그것이 당신이 의미하는 것이 아닌지 설명하려고 할 수 있습니까? – LuckyLuke
@Bob, 특정 디자인 패턴을 사용하는 것이 "더 좋을 때"에 대한 단순하고 컷 앤드 드라이 한 대답은 없습니다. Aggregate 패턴을 사용할지 여부와 같은 디자인 선택 사항에는 장단점이 있으므로 사용자의 특정 상황에 따라 장단점을 고려해야합니다. "A가 현실 세계에서 B 없이는 살 수 없다면, Aggregate로 모델링되어야합니다"와 같은 간단한 규칙은 아무 것도 도움이되지 않습니다. 그러한 규칙을 기계적으로 따르는 것보다 패턴의 * 목적 *을 이해하고 자신이 수행하는 것에 적합한지 판단해야합니다. –