가치 개체에 대한 일반적인 질문과 의견에서 더 구체적인 질문에 모두 답변하려고합니다.
- 도메인은 값 객체를 공유 할 수 있습니까?
에 달려 있습니다. 현재 우리는 15 개 정도의 대규모 서비스를 가지고 있으며 "EMailAddress", "PhoneNumber", "Money"등과 같은 값 유형을 공유합니다. 이러한 유형은 잘 정의되어 있으며 공유 문제는 없지만 이 다른 곳에서 사용될 수 있기 때문에 공유 된 가치 유형을 실제로 사용 된 것과 공유하기 때문에 물건을 공유하지 않습니다. 공유 할 때 시스템 전체에 걸친 가격을 지불해야합니다.
- 고객과 주문 간의 관계가 키를 래핑하는 값 개체로 표시됩니까?
아니요. 다른 사람이 지적했듯이 고객은 주문 도메인에서 작업하는 누군가가 데이터를 알고 필요하다고 생각합니다. "고객"과 "주문"이 두 개의 다른 도메인을 대표한다고 주장하는 경우 "고객"- 도메인이 CRM- 데이터와 같은 것으로 가정하고 있습니까? '고객'과 '주문'을 모델링하는 경우 '고객'- 도메인은 '주문'도메인에 필요한 데이터를 포함 할 수 없으며 청구서 수신 주소를 예로들 수 있습니다. 단단한 커플 링 및 거대한 객체 그래프에 대한 귀하의 이의를 이해하고 있지만, 시스템에서 여러 "고객"정보를 허용하도록하여 처리 할 수 있습니다. 각 "고객"은 한정된 컨텍스트 내에서 고유 한 데이터 및 동작 집합을 나타냅니다. 예를 들어 CRM 도메인의 Customer 엔티티와 "Order"- 도메인의 Customer 엔티티를 둘 다 가질 수 있습니다 ("Order"는 캡슐화 된 비즈니스 집합이 아닌 엔티티처럼 들리기 때문에 실제로 Ordering-domain을 추측합니다). 프로세스). 고객의 CRM 도메인에는 고객이 전화 번호, 연락 담당자, 우편 주소 등), 주문서에 고객이 확실히 주문을 할 수 있으며 청구서 수신 주소 등이있을 수 있습니다. 요약하면 : 모든 것을 가지고있는 고객을 창출하지 말고 자신의 도메인에 넣고 주문과의 관계를 제거하면 개체 그래프의 크기 만 줄입니다.
도메인을 말할 때 엔티티를 참조하는 것처럼 보입니다.문제는 명확하지 않다. 구현 세부 사항과 개념적 디자인이 섞여 있다고 생각한다. Order와 Customer가 그들과 비즈니스 관계를 맺고 있다면, 그 관계를 일등 시민으로 모델화하십시오. – JuanZe
아니요 엔티티 또는 집계를 언급하지 않았습니다. 나는 다른 영역을 언급하고 있었다. 그러나 엔티티가 동일한 값 객체 유형을 공유 할 수 있다는 간단한 대답을 통해 동일한 질문을 적용 할 수 있습니다. 필자의 견해로는 단단히 결합 된 하나의 도메인에서 큰 비즈니스를 모델링 할 수 없습니다. 엔티티는 일종의 관계가 있기 때문에 제 세계에서 제일 시민이되어서는 안됩니다. 그 도메인 모델은 시간이 지남에 따라 개발 될 짐승이 될 것입니다. – Glenn
고객을 주문과 어떻게 분리 할 수 있습니까? 하나는 다른 하나 없이는 의미가 없습니다. 고객없이 주문할 수 있습니까? 그렇지 않다면 어떻게 같은 도메인에 있지 않을 수 있습니까? – Dan