도메인 기반 디자인에서는 ID가있는 개체가 엔터티라는 것이 일반적입니다. 예를 들어 어떤 사람이라도 여러 가지 형태의 신원 (이름 등)을 갖게됩니다.개체/값 개체 선택
그러나 값 개체는 신원이없는 개체입니다. 하나의 공통 값 객체는 주소이지만 주소에는 ID가 없습니다. 그러나 데이터베이스 계층에서 우리는 복합 키를 가질 수 있습니다. 이 개념은 DDD에서 작동합니까? 그것은 도로명, 우편 번호 및 문 번호 (도시 및 도시와 같은 정보 생략)의 조합으로 주소를 식별 할 수있게합니다. 돈은 또 다른 가치 객체가 될 것입니다.
식별 할 수있는 필드가 하나도없는 개체에서 차이가있는 것처럼 보이고 값 개체는 실제 개체에 속하지 않는 경향이 있습니다. 예를 들어 "I"(내 이름으로 대체)는 신발 등을 착용 할 수 있지만 "나는"신발, 셔츠 등이 아닙니다 (http://www.lostechies.com/blogs/joe_ocampo/archive/2007/04/23/a-discussion-on-domain-driven-design-value-objects.aspx).
사물에 대해 생각하는 것이 올바른 방법입니까? 또한이 사고 방식으로 C#의 값/참조 유형 선택에이 방법을 적용 할 수 있습니다. 그래도 DDD 방식을 사용할 수 있습니까? 아마도 더 나은 당신이 일치하는 말 -
감사
엔티티/값 개체 구분은 C#에서 클래스와 구조체를 선택하는 데 도움이 될 수 있습니다. 나는 예외가 발생할 수있는 고려 사항이 있다고 확신한다. 반대의 경우에는 반대 유형을 선택하고 객체에 대한 다른 모든 사실은 한 유형에 적합하게 만든다. 그러나 주소 (건물)를 수정할 수 있습니다. 이것은 변경 가능하지 않아야합니까? 엔진은 작은 항목의 구조 및 복합 요소 일 수 있지만 수정할 수도 있습니다. – dotnetdev
솔직히 나는 여러분의 의견을 전적으로 따르지 않을지 모르지만, 주소의 변경 가능성과 관련하여 내가 불변의 클래스를 제안한 이유는 사람 A의 주소가 변경 될 때 사람 B에게 인스턴스 A 클래스에 대한 새로운 고유 한 인스턴스를 만들려면 강제로 주소 클래스의. 이것은 구조체에서 얻을 수있는 주요 이점이며 클래스를 사용하여 동일한 동작을 수행 할 수 있음을 보여 주려고했습니다. –
비즈니스 관점에서 볼 때 조금 까다 롭습니다. 예를 들어, 한 가족이 집을 갖지만이 역시 참조 유형입니다. 아이들이 어렸을 때 그들은 집을 옮기지 않으므로 그 집은 공유 된 참조입니다. – dotnetdev