2012-02-15 3 views
6

DDD를 따르려고하고 있는데 Question 클래스와 Feedback 클래스가 있습니다. 질문 수, 피드백 수 및 메타 작업으로 간주되는 많은 다른 요소를 계산할 수 있기를 원합니다.DDD의 리포지토리 클래스

이러한 "메타"메소드는 클래스에 속한 다른 메소드와 동일한 저장소에 있거나, 데이터베이스를 쿼리하는 다른 메타 메소드가있는 MetaRepository에 있어야합니다 (이 경우 모든 클래스가 혼합됩니다.)?

+2

어떤 디자인이 내 도메인에 가장 정확하게 매핑됩니까? – blueberryfields

+0

사실 나는 둘 다 괜찮다고 생각했습니다. 이것은 여전히 ​​화이트 보드에 있기 때문에 나는 변화를 열어두고있다. 내가 무엇을해야 할지를 말하지 않고 선택해야한다면, 그들이 속한 클래스에 메타 메소드를 넣을 것이다. – LuckyLuke

+0

두 맵 모두 도메인에 똑같이 적용됩니까? 예를 들어, 질문/피드백은 문서 또는 설문지와 같은 일종의 컨테이너의 일부일 수 있습니다. 컨테이너는 그것이 얼마나 많이 들어 있는지, 무엇이 무엇인지, 그리고 계산 방법을 원할 수도 있습니다. – blueberryfields

답변

8

아무것도 설명하지 목적으로 MetaRepository을 만들 본 적이 없어 집계 당 둘 이상의 저장소가있는 것을 금지합니다. 기본 쿼리 및 라이프 사이클 메소드 (IQuestionsRepository)를위한 하나의 저장소와 '메타'또는 '통계'목적 (IQuestionsStatistics)을위한 별도의 리포지토리를 가질 수 있습니다. 이것은 하나의 저장소 단위로 원칙을 따르면 '메소드 폭발'과 SRP 위반이 발생할 수있는 큰 도메인에서 매우 잘 작동합니다. 다음 DDD는 기본 OOP 원칙을 위반해서는 안됩니다.

1

나를 위해 각 저장소는 요소 계산에 대한 책임이 있으며 getById, getAll ... (표준 메소드) 중 하나의 메소드입니다.

0

도메인의 중요한 부분을 나타내는이 질문 ('사용자 의견 수')과 수량은 무엇입니까?

그렇다면 합리적인 쿼리처럼 보이기 때문에 저장소에 저장하는 것이 좋습니다. 결국 리포지토리의 작업은 포함 된 집계에 대한 도메인 관련 질문에 대답하는 것입니다.

그렇지 않으면 예 : 이것이 아마도 사용자에게 표시되는 부수적 인 물건 일 경우 이러한 질문은 도메인 계층 외부의 응용 프로그램 서비스에 속할 수 있습니다.

0

나는 일반적인 저장소를 도메인 모델 클래스 당 하나의 저장소의 이상에 충실하거나 사용하는 것이

나는 개인적으로 누군가가 당신이 DDD의