我在开发新系统时尝试使用 DDD。在这个系统中,我有地点,我需要根据您所属的广告组授予对地点的访问权限。我还需要从广告组列表中获取允许的地点列表。
我想出了以下几点:
interface IPlaceRepository
{
Places[] GetPlacesForGroups(AdGroup[] adGroups);
}
class AdGroup()
{
string Name { get; private set; }
}
class Place
{
string Name { get; private set; }
}
现在我需要添加一个函数来授予组访问特定位置的权限。根据 DDD,这是正确的方法吗?我有两个建议。我假设广告组可以被视为价值对象。
- 向 Place 添加一个功能。
void GiveAccessTo(AdGroup adGroup) { ... }
并向 IPlaceRepository 添加一个函数。
void AddGroupToPlace(Place p, Group g) { ... }
然后我需要将 IPlaceRepository 注入 Place 以在 GiveAccessTo 中使用。
- 另一种方法可能是创建一个 ISecurityService?我可以在该服务上想到这样的方法。
void GiveAccessToPlace(AdGroup g, Place p)
与选项 1 一样,我需要在 IPlaceRepository 上实现一个方法并将存储库注入到服务中。
执行此操作的 DDD 方法是哪种?