제 집 프로젝트에서 제 도메인 객체의 유형을 결정할 때 문제가있었습니다.DDD 값 개체에 DDD 엔터티가 숨겨져 있습니까?
도메인 : 버스 시간표
경계 상황 : 라우팅 (대중 교통 인프라, ctx1), 일정 (일정 ctx2를)
객체 :
역 - 버스 정류장을 설명
라우트 (ctx1) - 스테이션 세트 (라우팅 웨이 포인트)
라인 (ctx1) - 버스 라인을 설명합니다. 목록을 포함합니다.
일정 (ctx2) - Route의 경유지에서 출발하는 명명 된 집합입니다.
예
은 : 버스 라인 (25A)은 두 경로 갖는다 {ST1, ST3, ST20를}, {ST20, ST15, ST3, ST1}] 및 (2 개) 스케줄 (일정 - 1 행 1 sch2- R2) 이 2 개의 노선에 붙어 있습니다. 아무 의심와
은 내가 DDD 개체, 집계 뿌리로 도시라인 및 을 확인했다. 또한, Line과 Line의 수명주기 이외에는 의미가 없기 때문에 Routes를 Lines에두기로 결정했습니다. 여전히 좋아 보인다.
다음 단계는 일정 도메인 개체를 정의하는 것입니다. 공공 교통 인프라와는 분리하기를 원했기 때문에 다른 컨텍스트로 연결했습니다. 문제는 이제 경로에 연결해야하며 식별자가 없다는 것입니다.
내 아이디어 : 노선에
넣고 일정. 옵션이 아닌 이유 : 라인이 뚱뚱해집니다. ctx1과 ctx2의 ubercontext를 생성합니다.
경로를 엔티티으로 만듭니다. 왜 옵션이 아닌지 (내 생각에는 ...) : 일부 식별자 (예 : 이름)가있는 경로를 상상하기는 어렵지 않지만 버스 노선 외부의 버스 경로를 상상하는 것만으로는 충분하지 않습니다.
어쩌면 내가 완전히 잘못 했나요?
당신은 :'''그리고 한 줄에 일정''- 그건 내가 피하고 싶다. 라우팅 도메인에서 일정 도메인에 대해 알 필요가 없습니다. 즉,'Schedule' 엔티티는 Route의 idenifier를 가져야 만합니다. 그러나'Route'가'Line Aggreate Root'에있는 엔티티라면 Aggreate Root의 일부분인데 참조 할 수는 없으며 유일하게 가능한 것은'Schedule'과'Line' 사이의 링크입니다. 내가 맞습니까? – ovnia
모두 1 개의 큰 도메인입니다 (가능하면 복수의 집계 루트가 있음). 그러나 노선, 노선 및 일정은 매우 상호 연관되어 보입니다. 일정/시간표는 경로에 따라 다릅니다. 그래서 나는 여기에서 일어나는 2 개의 제한된 컨텍스트를 보지 못한다 – Batavia
+1 훌륭한 편집, Batavia. "우리는"그것이 모델링 된 것을보고 싶어하지만, 이해 관계자에게 질문하면 대답은 이미 존재할 가능성이 높습니다. 유비쿼터스 언어의 요소는 구현을 이미 존재하게 할 가능성이 높습니다. 개발 관점에서 무엇이 가장 합당한 지에 관계없이 이해 관계자가이를 어떻게 보느냐에 따라 주도되어야합니다. 그렇지 않은 경우 개발 팀 (도메인 전문가/이해 관계자 포함) 간의 커뮤니케이션이 더 어려워집니다. –