2016-07-27 3 views
2

제 집 프로젝트에서 제 도메인 객체의 유형을 결정할 때 문제가있었습니다.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를 생성합니다.

  • 경로를 엔티티으로 만듭니다. 왜 옵션이 아닌지 (내 생각에는 ...) : 일부 식별자 (예 : 이름)가있는 경로를 상상하기는 어렵지 않지만 버스 노선 외부의 버스 경로를 상상하는 것만으로는 충분하지 않습니다.

어쩌면 내가 완전히 잘못 했나요?

답변

3

도메인을 어떻게 사용하고 싶은지 더 생각해야한다고 생각합니다. 당신의 예에서 당신은 이미 당신은 선이 있고, 선은 경로를 가지고 있고, 선은 일정을 가지고 있다고 말한다.

경로 질문 (예 :이 경로의 st77) 또는 작업 (s99 중지는 2 주 동안)을 묻고 싶습니다. 경로가 엔티티임을 의미합니다. 어쩌면 당신의 가치 대상이 될 수도 있습니다.

경로의 총근은 버스 선이 될 것입니다. 선의 바깥 쪽 경로는 이미지 할 수 없다고 말했던 것처럼 말입니다. 정확히 집계 루트가 의미하는 것입니다.

경로의 식별자는 의미있는 이름 일 필요는 없으며 일부 임의의 GUID를 식별자로 사용할 수 있습니다. 내 컴퓨터를 일련 번호로 사용하십시오. 아무도 그 일련 번호에 대해 말하지 않습니다. (제가 x 형의 dell에 대해 말하고 있습니다.) 아직 주문한 바로 그 특정 컴퓨터를 식별하고 추적하는 것은 아주 좋은 번호입니다.

업데이트 또한 DDD는 문제를 설명하고 모델링합니다. 그것은 문제 영역을 뒤덮는 여행에 관한 것입니다. 도메인 전문가와 함께 해결하려고하는 문제를 이야기 할 때 어떻게 보이는지 발견하십시오. 어쩌면 경로와 회선이 일정이 문제가되지 않는다는 것을 발견했을 수도 있습니다. &가 중지됩니다. (만약 당신이 문제를 해결하려고하면 다음 버스가 작동 할 때를 찾으면 버스 회사이고 실제로 버스를 운전할 일정이 필요합니다.)

+0

당신은 :'''그리고 한 줄에 일정''- 그건 내가 피하고 싶다. 라우팅 도메인에서 일정 도메인에 대해 알 필요가 없습니다. 즉,'Schedule' 엔티티는 Route의 idenifier를 가져야 만합니다. 그러나'Route'가'Line Aggreate Root'에있는 엔티티라면 Aggreate Root의 일부분인데 참조 할 수는 없으며 유일하게 가능한 것은'Schedule'과'Line' 사이의 링크입니다. 내가 맞습니까? – ovnia

+0

모두 1 개의 큰 도메인입니다 (가능하면 복수의 집계 루트가 있음). 그러나 노선, 노선 및 일정은 매우 상호 연관되어 보입니다. 일정/시간표는 경로에 따라 다릅니다. 그래서 나는 여기에서 일어나는 2 개의 제한된 컨텍스트를 보지 못한다 – Batavia

+2

+1 훌륭한 편집, Batavia. "우리는"그것이 모델링 된 것을보고 싶어하지만, 이해 관계자에게 질문하면 대답은 이미 존재할 가능성이 높습니다. 유비쿼터스 언어의 요소는 구현을 이미 존재하게 할 가능성이 높습니다. 개발 관점에서 무엇이 가장 합당한 지에 관계없이 이해 관계자가이를 어떻게 보느냐에 따라 주도되어야합니다. 그렇지 않은 경우 개발 팀 (도메인 전문가/이해 관계자 포함) 간의 커뮤니케이션이 더 어려워집니다. –