0

내 판매 모듈에 OrderOrderType 클래스가 있으며, OrderType 클래스는 일부 분류 목표에 사용하고 Order에 일부 비즈니스 규칙을 적용합니다. 각 클래스에는 고유 한 테이블이 있습니다.DDD의 값 객체

내 프로젝트에 DDD 기술을 적용하고 싶습니다. 따라서 Order집계 루트입니다.하지만 OrderType은 어떨까요? Order 집합에도 포함되어 있습니까? 아니면 값 개체입니까? 저는 그것이 가치 객체라고 생각합니다. 맞습니까?

enter image description here

+2

단순히 DDD 기술을 적용 할 수 없습니다. DDD는 레서피에 따라 버튼을 누르지 않고 도메인을 정확하게 모델링합니다. 왜 주문은 골재입니까? 어떤 Ordered 문맥은 Order의 본질적인 특성입니까? 도메인은 OrderType에 의해 무엇을 이해합니까? DDD는 엔티티와 가치 객체를 선택/추측하는 것이 아닙니다. 그리고 내가 많은 관계를 볼 때 나는 99.99 % 당신이 DDD를하고 있지 않다는 것을 확신합니다. 당신은 여전히 ​​도메인을 모델링 할 때 DDD에 아무 것도없는 rdbms 사고 방식을 사용하고 있습니다. – MikeSW

+0

@MikeSW : 요약 : 1. Order는 Order 및 OrderLines의 지속성을 담당하기 때문에 루트입니다. 2. 제한된 컨텍스트는 판매입니다. 3. 예 OrderType은 Order의 고유 기능입니다 (OrderType의 일부 값 : InternalOrder, ExportOrder, ...) 4. 왜 "일대일을 볼 때 ..."라고 말하는가? 모델에서 일대 다 관계를 가지고 DDD 주체와 모순이 있습니까? – Masoud

+0

집계 루트가 ** 지속성과 관련이없는 ** 전혀 없다는 점을 두려워합니다. 도메인 개념과 관련이 있습니다. DDD에 대해 더 많이 읽고 올바른 것을 이해할 때까지 '정상적인'OOP 만 사용하는 것이 좋습니다. 적어도 당신은 DDD를하고 있다는 (틀린) 가정하에 있지 않을 것입니다. – MikeSW

답변

0

는 언제나처럼 "그것은 의존한다 ..."

를 당신의 묘사에서 에릭 에반스는 의미로 값 객체 또는, 정체성없이 읽기 전용 엔티티 있어야한다 보인다.

  1. OrderType는 (다른 개체로 전송 될 수있다) 별도의 엔티티되어야하거나 그것 Order 객체의 작은 부분?

  2. OrderType은 동일한 필드 (Code, Title)에도 고유 한 개체가 있어야합니까?

    예 -> Entity with ID; 아니요 -> 값 객체

0

OrderType을 모델링하는 클래스가 필요하지 않을 수도 있습니다. 프로그래밍 언어가 지원하는 경우 특성이있는 열거 형으로 충분할 수 있습니다 (예 :

public enum OrderType { 
    [Code("ABC123")] 
    OneTime = 0, 
    [Code("XYZ456")] 
    Repeating = 1 
} 
1

일반적인 질문이 "Entity vs Value Object"입니다.

OrderType? 그것도 주문 집합에 포함되어 있습니까 아니면 Value object입니까? 나는 그것이 가치 객체라고 생각한다. 나 맞아?

내가 OrderType 엔티티이라고 말을하지만,이 도메인을 따라 달라집니다.

Value ObjectEntity 차이

은 간단

  1. 가치 개체 모든 속성이 동일한 경우에 동일한 것으로 간주된다.

    모델의 요소의 특성과 논리에만 관심이있는 경우이를 값 개체로 분류하십시오. 의 의미를 표현하고 전달하는 속성을 관련 기능을 제공하게하십시오. 값 개체를 불변으로 처리하십시오. 그들이 동일한 ID가있을 때

  2. 엔티티은 동일한 것으로 간주됩니다.

    객체가 속성이 아닌 ID로 구분되는 경우이 기본 객체를 모델의 정의로 만듭니다. 클래스 정의는 간단하고 수명주기 연속성 및 ID에 초점을 맞 춥니 다. 동일한 개체의 두 인스턴스가 같은 개체이며, 다른 속성 값, 하지만 같은 ID 값이있는 경우

    :

이는 a simple “litmus test” for Entities입니까?