저는 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);
}
}