2
Evans의 프로젝트를 샘플 DDD 프로젝트에서 보았을 때 Evans는 Cargo
엔티티에서 값 개체 인 tracknumber를 사용합니다. 왜 그가 평범한 것을 선택하지 않았 냐면 string tracknumber
대신 identity를 위해 value 객체를 선택 했습니까?개체에서 식별자로 값 개체 사용
public class Cargo implements Entity<Cargo> {
private TrackingId trackingId
}
public final class TrackingId implements ValueObject<TrackingId> {
private String id;
/**
* Constructor.
*
* @param id Id string.
*/
public TrackingId(final String id) {
Validate.notNull(id);
this.id = id;
}
우리는 .NET 세계에서 동일한 결과를 얻을 수 있습니다. 우리는 생성자를 통해서만 설정되고 나중에 변경할 수 없거나 getter 없이는 setter가없는 readonly 변수가 있습니다. – kamal
물론, 로직은 TrackingId가 아니라 Cargo 오브젝트에있을 것입니다. 필자가 지적한 바는 값 객체 접근법이 추적 ID 자체에 해당 로직을 캡슐화한다는 것입니다. – David
@kamal. TrackingId는 Cargo 객체가 필요로하지 않거나 알고 싶어하는 다른 유용한 작업을 수행 할 수도 있습니다 (예 : 고객 조회에서 자체 서식 지정, 다음 사용 가능한 ID 번호 할당 및 존재를 정당화하는 것 이외의 까다로운 논리). . 건배 – Berryl