문제

이 패턴에 대해 읽은 후 다시 혼란스러워하고 여기에 대한 많은 우려가 있습니다.

도메인 모델이 있고 데이터 전송 객체에 지속되어야하는 데이터를 캡처하는 경우 내 도메인 모델이 데이터 주변의 래퍼로 만들까요? 이 경우 빈혈 도메인 모델을 사용하고 있습니다. 그러나 그 래퍼에 충분한 도메인 로직을 추가하면 어떤 시점에서 실제 도메인 모델이됩니까?

도메인 모델에서 지속되어야하는 것을 캡처하면 모범 사례를 위반하고 빈혈 도메인 모델 방지 패턴을 만듭니다. 그러나 관계형 DB를 사용하는 경우 객체의 상태를 만들고 저장하는 부분을 단독으로하지 않는 방법이 없습니다.

나는 개념에 대해 꽤 혼란스러워서 내가 쓰는 것이 의미가 있다고 확신하지 못한다. 자유롭게 설명하십시오.

도움이 되었습니까?

해결책

포함 할 때 '실제'도메인 모델이됩니다. 모두 (또는 대부분)의 행동 비즈니스 도메인을 구성합니다 (참고 강조하고 있습니다. 비즈니스 로직, UI 또는 기타 직교 문제가 아닙니다).

사용하는 경우 유비쿼터스 언어, 그리고 얻는 것 지속적인 피드백 당신의 도메인 전문가, 당신은 당신이 올바른 길을 가고 있다는 것을 알게 될 것입니다 (전문가들은 도메인 모델을 볼 때 고개를 끄덕이어야합니다). 이런 일을하지 않는다면 DDD를하고 있지 않습니다 (에릭 에반스는 그것에 대해 이야기합니다).

DTO의 지점에 : 무시하지 마십시오. 구현 관점에서, 레이어/계층 사이의 데이터를 페리해야합니다. DTO와 실제 도메인 객체를 결합하는 방법은 실제로 사용중인 기술에 따라 다릅니다.

이전 답변에서 언급했듯이, 아마도 당신의 초점은 데이터 그리고 고집 당신을 산만하게합니다 진실 도메인 모델링 ...

다른 팁

관심있는 두 가지 항목이 내 마음에옵니다.

  • 데이터 전송 객체 (DTO)는 도메인 객체와 다릅니다. 그들은 건축의 다른 장소에서 다른 목적을 제공합니다. 혼동하지 마십시오. 도메인 객체는 a 리치 API ~와 함께 높은 응집력. DTOS입니다 수동 데이터 구조 Application의 외부 인터페이스에 사용됩니다. UI ViewModels와 마찬가지로 사용자 대신 자동화 된 시스템을 목표로합니다.
  • 고용 할 수있는 ORM을 선택한 후 노력 지속성 무지. 즉, 도메인 모델을 무한한 방식으로 정의하고 ORM을 단순히 객체를 관계형 데이터베이스에 맵핑하도록 할 수 있습니다.

그러나 그 래퍼에 충분한 도메인 로직을 추가하면 어떤 시점에서 실제 도메인 모델이됩니까?

우연한 방식으로 물건을 추가하여 도메인 모델에 도착하는 것은 가능하지만 도메인 구동 설계는 아닙니다. (나는 이것이 실제로 도움이되지 않는다는 것을 알고 있습니다. 나는 매우 데이터 중심적이라고 생각하는 경향이 있으며, 어떤 경우에는이 관점에서 자신을 끌어 내기 위해 실질적인 노력이 필요합니다.)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top