기존 응용 프로그램의 그린 필드 모듈에 DDD와 유사한 접근 방식을 사용하고 있습니다. 아키텍처로 인해 100 % DDD는 아니지만 일부 DDD 개념을 사용하려고합니다. 나는 경계 컨텍스트 (I 그 적절한 용어라고 생각 - 난 아직도 DDD에 대해 배우고)가 두 엔티티 구성을 : Conversation
와 Message
. 대화가없는 메시지는 존재하지 않으며 시스템의 모든 메시지는 대화의 일부이므로 대화는 근본입니다.
나는이 ConversationRepository
데이터베이스에 대화를 찾습니다 (정말 더 게이트웨이처럼, 나는 용어 "저장소"를 사용 비록) 클래스; 대화를 찾으면 팩토리를 통해 해당 대화에 대한 메시지 목록 (속성으로 노출됨)을 생성합니다. 이것은 MessageRepository
대화가 검색 될 때만 존재하므로 본격적인 클래스 가 필요하지 않기 때문에 물건을 처리하는 올바른 방법 인 것 같습니다 .
그러나 메시지 저장과 관련하여 ConversationRepository의 책임은 메시지의 전체 루트이기 때문에 이것이 ConversationRepository의 책임입니까? 내 말은, ConversationRepository에 메소드를 호출해야한다는 것 AddMessage
입니다. 메시지를 매개 변수로 사용하여 데이터베이스에 저장합니다. 또는 메시지 찾기 / 저장을위한 별도의 저장소가 있어야합니까? 논리적 인 것은 엔티티 당 하나의 저장소 인 것처럼 보이지만 "컨텍스트 당 하나의 저장소"를 들었습니다.