2011-03-31 3 views
2

주소가 파트와 vo 인 개인 집계가 있지만 이제는 다른 VO PaymentInfo가있는 다른 집계 지불이 있습니다. 여기에는 신용 카드 번호 및 기타 세부 정보가 들어 있지만 지금은 청구서 수신 주소와 배송지 주소가 필요합니다. PaymentInfo VO. 이제 주소가 사람에게 필수적이기 때문에 나는 그것을 사용할 수 없습니다. 내가 그래서주소 딜레마

,

  1. 가 지불 집계에 별도의 주소 Vo에 생성 및 결제 주소와 배송 주소로 사용합니다.

  2. 주소를 이동하여 집계를 분리하고 PaymentInfo 및 Person에서 참조하십시오.

  3. Person 자체에 두 개의 주소를 만들고 PaymentInfo Vo에서 참조하십시오.

도와주세요.

답변

2

중요한 것은 여기에 - value objects have no identity입니다.
즉, 엔티티간에 쉽게 공유 될 수 있습니다.

특정 인스턴스가 공유되지 않아야하지만 그 클래스는 "UK, London street ''16 '대신에 Address을 입력하십시오. (- 그들은 더 정체성이 없어 원인과 상태를 정의하는 것입니다 다시) 값 오브젝트 인스턴스는결코 공유해야합니다.

그래서 내 생각에 - 개념과 사람과 지불 정보 (그들은 동일한 구조가 있어야합니다)에 대한 공통점은 Address으로 확인하고, 그것을 오른쪽 폴더/네임 스페이스로 옮겨서 공유하고 사용하는 것을 볼 수 있습니다. 그것은 두 개체 모두를위한 것입니다. 그들은 유비쿼터스하지 않은 경우

, 나는 PersonAddressAddress 이름을 변경하고 두 번째 만들 것 - (귀하의 비즈니스 당신은 모델링에 따라 다를 수 있습니다 이름) PayerAddress합니다. 그들은 단지 다른 골재의 내부을 참조 할 수 없습니다 -이 집계 뿌리가 같은 개체를 참조 아무런 문제가 없습니다

: 제공된 링크에서 제프를 인용

. 더 단순한 값 오브젝트의 경우에는 다릅니다. "8 월 20 일, 2010"과 같은 날짜를 수업에서 여러 번 참조 할 수있는 방법을 고려하십시오.

+0

움직임을 그래서이 집계 뿌리가 같은 개체 "를 참조 아무런 문제가 없다가 공유되는 것을 볼 두 기관을 위해 사용합니다."와 "할 수는. 당신은 공유 폴더에 의미하지만 주소는 다른 필요 클래스도 국가 및 도시와 비슷합니까? – kamal

+1

DDD 용어로는 [** Shared Kernel **] (http://www.scribd.com/doc/12393457/24/Shared-Kernel)라고합니다. 핵심 집합 바운드 컨텍스트간에 차이가없는 (대개 값) 객체 – MattDavey

0

나는 그것의 유비쿼터스와 함께 갈 것이다. 사람 주소 클래스를 청구서 수신 주소와 배송 주소로 참조하지 마십시오 ..

두 가지를 쉽게 달성 할 수 있습니다. 비즈니스 분석가에서 얻을 수있는 통신 혜택은 두 번째이며, 코딩은 명시 적이며 이해할 수있는 것입니다. . 바로 폴더/네임 스페이스에