1

저는 DDD에 처음으로 익숙합니다. 실용적인 측면에서 보면 집계에 적합한 함수를 검색합니다. 나는 긴 목록의 사용자 (User)와 그 집계 (UserAggregate)를 만듭니다.비즈니스 로직을 DDD 집계로 정렬/필터링 구현

이제 내보기에는 다른 기준에 따라 사용자를 표시 할 수 있습니다. 내 데이터베이스 쿼리에서 목록을 정렬하지 않는다고 가정 해 봅시다. 집계에서 정렬 할 수 있습니까? 내가 제대로 할 수있는 응용 프로그램의 다른 부분을 생각해 낼 수는 없지만 집계의 기능을 오해 할 수도 있습니다.

$users = new UserAggregate(array(
$user1, $user2, $user3, $user4 
)); 

foreach ($users->sortBySurname(), $user) { 
// 
} 

foreach ($users->sortByLastLoggedIn(), $user) { 
// 
} 

그런데 필터링도 마찬가지입니다. DDD 집합에 대해 읽었을 때 나는 즉시 Doctrine\Common\Collections\Collection (link)을 생각했습니다. 그 종류는 나에게 모이는 것 같다. 그래서 DDD 전문가들은

업데이트

내가 BTW 생각 유일한 방법은 집계 오히려 immutual 새로운 집계를 만들 수있는 조력자를 만들고 있었다 :-) 가르치 려하시기 바랍니다.

$aggregate = new UserAggregate(array($user1, $user2)); 
$helper = new FilterSomething; 
$aggregate = $helper->filter($aggregate); 

두 번째 집합은 새로운 인스턴스, 그래서 도우미는 다음과 같습니다 :하지만이 길을 가야하는 것 아니 것 같다

class FilterSomething 
{ 
    public function filter(Aggregate $aggregate) 
    { 
    $items = $aggregate->getItems(); 
    $items = $this->doFilter($items); 

    return new Aggregate($items); 
    } 
} 

답변

-1

루트 집계 저장소가 아닙니다. 루트 집계는 단일 사용자를 나타내고 그 모두는 도메인 특정 정보를 나타냅니다.

해당 정렬 및 필터링은 저장소에 적용되어야합니다.

관련 문제