2012-07-11 1 views
1

은 내가 값이이 개체 이해 생각들이 엔티티 어떻게 다른지와 (그들은 더 개념적인 정체성이 없다, 그 속성의 설정은 그 정의 등입니다)하지만, 난 여전히 의아해 해요 여부 원시적 형의 값 (int, 문자열 ...)은 엔터티에 직접 할당됩니다.VO으로 간주됩니다.이 값은 값 개체입니까?

예를 들어, 다음의 코드 할당 Person.Name (Name 형의) 목적은 VO이지만 값도 고려 VOPerson.FirstName, Person.LastNamePerson.Age에 할당?

public class Person 
{ 
    public string FirstName = ... 
    public string LastName = ... 
    public int Age = ... 

    public Name Name = ... 
       ... 
} 

public class Name 
{ 
    public string FirstName = ... 
    public string LastName = ... 
    public int Age = ... 
} 

은 감사합니다

+0

에 따라 다릅니다. First/LastName은 Name VO로 끝나고 Age는 자신의 VO로 표시 될 것입니다. 그러나 다시 말하지만, 구체적인 상황과 행동이 없이는 말하기가 어렵습니다. –

답변

3

값이 기본 유형 (예 : string 또는 int)이거나 기본 유형 (예 : Name)으로 구성된 복합 유형이든 상관 없습니다. 중요한 것은 어떤 정체성도없는 단순한 "가치"라고 생각한다는 것입니다. 그러면 그것은 가치 대상입니다.

프리미티브로 유지하거나 클래스로 래핑하기로 한 결정은 구현 세부 사항입니다. 특정 유형은 미래에 확장하기 쉽고 기본 유형보다 기능을 추가하기가 쉽습니다.

+0

도움 주셔서 감사합니다. – user1483278

1

확인이 related question ... 값 개체를 구현 것은 더 많이 당신이 그것에 대해 생각한다면 하나 "개념은 ...", 싱글과 플라이급 패턴은 객체를 회전에 대한 것을 최적화를 위해 값 객체에 대한 ID를 가지고 ... 또한 무언가를 변경 가능하거나 변경 불가능한 것으로 구현하는 것과 관련이 있습니다. 사람은 항상 변경할 수 없다고 말할 수 있지만 잠시 후, 당신은 다른 속성을 가진 "새로운"사람입니다. 구현 결정이 아니라 도메인 또는 개념적 결정입니다. (변경 가능하지 않은 객체는 값 객체이고 변경 가능한 객체는 ID 객체 인 경향이 있음).

+1

이것은 실제로 도메인 중심 디자인의 본질에 반하는 것입니다. 표준 디자인 패턴 (구현 도구 인 싱글 톤 (singleton) 및 플라이급 (flyweight)과 같은)으로 도메인 디자인 개념 (예 : 개념 도구 인 엔티티 및 값 객체)을 혼동스럽게 생각한다고 생각합니다. – casablanca