새로운 시스템을 개발할 때 DDD를 사용하려고합니다. 이 시스템에는 장소가있어 회원이되어있는 광고 그룹을 기반으로 한 장소에 대한 액세스 권한을 부여해야합니다. 또한 광고 그룹 목록에서 허용되는 장소의 목록을 가져와야합니다.DDD. 엔티티 또는 서비스에 대한 메소드?
하는 나는 다음을 마련했습니다
interface IPlaceRepository
{
Places[] GetPlacesForGroups(AdGroup[] adGroups);
}
class AdGroup()
{
string Name { get; private set; }
}
class Place
{
string Name { get; private set; }
}
가 지금은 특정 위치에 그룹 액세스 권한을 부여하는 기능을 추가해야합니다. DDD에 따르면 올바른 방법은 무엇입니까? 두 가지 제안이 있습니다. 광고 그룹을 값 개체로 간주 할 수 있다고 가정합니다.
- 장소에 기능을 추가하십시오.
void GiveAccessTo(AdGroup adGroup) { ... }
및 IPlaceRepository에 기능을 추가한다.
void AddGroupToPlace(Place p, Group g) { ... }
그러면 GiveAccessTo 내에서 사용할 수 있도록 IPlaceRepository를 삽입해야합니다.
- 또 다른 방법은 ISecurityService를 만드는 것입니다. 나는 그와 같은 방법을 그 봉사에서 생각할 수있다. 내가 IPlaceRepository의 메소드를 구현하고 서비스에 저장소를 주입해야하는 옵션 1과 동일한 방법으로
void GiveAccessToPlace(AdGroup g, Place p)
.
이 작업을 수행하는 DDD 방법은 무엇입니까?
리포지토리에'AddXtoY()'메소드를 포함 할 필요가 없습니다. 집계의 모든 엔티티와 값 객체는 저장 될 때 루트와 함께 자동으로 유지됩니다 (일반적으로 UnitOfWork가 DB로 플러시 될 때). – guillaume31