귀하의 접근 방식은 효과가 있지만 이러한 구성은 귀하 도메인의 내재적 인 기능이 아니라 DDD 빌딩 블록에 초점을 맞춘 귀하의 코드에 관한 이야기입니다. DDD에서 우리는 도메인에 관한 중요한 것을 보여주고 싶습니다. 기술 문제는 더 이상 중요한 관심사가 아닙니다.
내가 만들고 다음 네임 스페이스를 제안 : 모든 응용 프로그램 범위 빌딩 블록을 유지할 수 있습니다 여기에
YourCompany.YourApplicationName.YourParticularBoundedContextName.Application
즉 응용 프로그램 서비스에 매개 변수를 전송하고 데이터를 반환하는 데 사용되는 응용 프로그램 서비스와 DTO의.
YourCompany.YourApplicationName.YourParticularBoundedContextName.Domain
이것은 도메인 범위 작성 블록의 하위 네임 스페이스를 만들 이름 공간입니다.
YourCompany.YourApplicationName.YourParticularBoundedContextName.Domain.AggregateName
각각 집계는 C#으로이 경우 모르겠어요 등이 집계 루트 클래스, 엔티티이며, VO로이 집계, 저장소 인터페이스에서 내부적으로 사용하는 자신의 네임 스페이스, 골재 공장이 필요한 경우 이 가능하지만 Java에서는 Aggregate에 별도의 패키지 (네임 스페이스)를 갖는 또 다른 이점이 있습니다. Aggregate Root 클래스를 공용으로 만들 수 있으며 내부적으로 패키지 범위로 사용되는 다른 모든 Entities 및 VO를 만들 수 있으므로 패키지 외부에서 볼 수 없습니다 (네임 스페이스). 컴파일러 : 여기
YourCompany.YourApplicationName.YourParticularBoundedContextName.Infrastructure
이 저장소 '구현을위한 장소 (집계 대응 subnamespace 각)
입니다 : 보호자가 있기 때문에이 방법을 사용하면, 아무도 깰 수 없다는 당신의 집계에 대한 공개 API를 구축
기본 클래스에서 유지 될 수있다 :
YourCompany.YourApplicationName.Domain
및 다른 응용 프로그램에서 다시 시도 할 수 있습니다로도 별도의 프로젝트에 보관.
이점은 무엇입니까? 코드로 작업 할 때 기술 측면보다는 기능 및 도메인에 주력합니다. "이 프로세스 흐름이 어떻게 생겼는지"와 같은 문제에 대처해야 할 때가 많습니다. "모든 Entities 및 VO를 한꺼번에보고 싶습니다."라는 코드 구조를 지원해야합니다.엔티티 (실제로 파트를 집계)와 VO (집계 파트)를 별도의 네임 스페이스로 분리하면 무엇으로 작업하는지 정보가 손실됩니다. 큰 진흙 구슬로 간단하게 끝낼 수 있습니다. 재사용해서는 안되는 것을 재사용 할 것이기 때문입니다.
다음을보십시오. https://github.com/BottegaIT/ddd-leaven-v2 이 방법으로 패키징 된 Java의 샘플 프로젝트입니다. 어쩌면 그것은 당신을 도울 것입니다.
또 다른 예로는 Daugh에 관한 Vaughn Vernon의 책 샘플 인 https://github.com/VaughnVernon/IDDD_Samples 이 있습니다. 내가 도메인 층에 대해 이야기하고 http://www.codingthearchitecture.com/2015/03/08/package_by_component_and_architecturally_aligned_testing.html
: 유용 할 수 있습니다 기사도 있습니다
. 도메인 계층은 데이터베이스를 인식하지 못합니다. 따라서 나는 당신이 의미하는 것을 이해하지 못합니다. – w0051977