내 도메인 개체에 유비쿼터스 언어를 적용하려고합니다.DTO를 도메인 개체로 변환하는 방법
클라이언트의 Data Transfer Object
을 도메인 개체로 변환하려고합니다. Aggregate's Constructor
은 필수 입력란 만 허용하며 Aggregate
을 만들 때 (예 : CreateAggregate
command
)에도 나머지 매개 변수는 aggregate's
API
을 사용하여 전달해야합니다.
그러나 DTO
Aggregate
매핑 코드는 지저분한 조금이된다 : 내가 언급해야
if(DTO.RegistrantType == 0){
registrantType = RegistrantType.Person()
}
elseif(DTO.RegistrantType == 1){
registrantType = RegistrantType.Company()
}
//.....
//.....
var aggregate = new Aggregate(
title,
weight,
registrantType,
route,
callNumber,
)
//look at this one:
if(DTO.connectionType == 0){
aggregate.Route(ConnectionType.InCity(cityId))
}
elseif(DTO.connectionType == 1){
aggregate.Route(ConnectionType.Intercity(DTO.originCityId,DTO.DestinationCityId)
}
//..........
//..........
한 것은이 문제가 도메인 특정 문제가 보이지 않는다는 것입니다.
어떻게하고, 유비쿼터스을 갖는, 그리고집계 (안 매핑 도구)는 비즈니스 규칙의이 Invalide 수있는 값을 허용하지 않는지 확인되는 내 domain internals leakage
을 말도없이 이러한 IF-else 문을 줄일 수 있습니다 언어가 적용 되었습니까?
트릭을 수행하려면 AoutoMapper
을 사용하십시오. 마지막 부분을주의 깊게 읽으십시오. '
감사합니다.
당신의 대답은 완벽 합니다만,'RegistrantType.Person()'은 enum 값을 0으로 돌려주고,'RegistrantType.Company()'는 enum 값을 1로 반환합니다. 번호를 집계에 전달하지 않은 이유는 도메인의 내부가 누출되지 않기 위해서였습니다. 그리고이 특별한 경우에 팩토리를 만들면 팩토리는 열거 형 플래그로 숫자를 반환해야합니다. 그리고 그것은 암묵적이고 빈혈적인 모델처럼 들립니다. 어떤 제안입니까? – Mohsen