域驱动设计 – 我允许在DDD中有“不完整”的聚合?

前端之家收集整理的这篇文章主要介绍了域驱动设计 – 我允许在DDD中有“不完整”的聚合?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
DDD声明您应该只能通过其聚合根访问实体.所以说,例如,你有一个聚合的根X,可能有很多孩子Y实体.现在,对于某些情况,您一次只关心这些Y个实体的一个子集(也许您正在一个分页列表中显示它们).

实现存储库是否可行,因此在这种情况下,它返回不完整的聚合? IE浏览器.一个X对象谁的Ys集合只包含我们感兴趣的Y实例,而不是全部?这可以例如引起X上的方法,其执行涉及Y的一些计算不如预期的那样表现.

这可能意味着有关的Y实体应被视为一个总体根源?

我目前的想法(在C#中)是利用LINQ的延迟执行,所以我的X对象有一个IQueryable来表示它与Y的关系.这样,我可以透明的懒惰加载过滤…但让它工作使用ORM(Linq to sql在我的情况下)可能有点棘手.

任何其他聪明的想法?

我认为一个具有很多子实体的聚合根是一个代码气味,或者如果你愿意的话,会有DDD的气味. :-)一般来说我看两个选项.

>将您的聚合分割成许多较小的聚合.这意味着我的原始设计不是最佳的,我需要识别一些新的实体.>将您的域拆分成多个有界的上下文.这意味着有一组场景使用聚合中实体的公共子集,而还有其他使用不同子集的情景集.

猜你在找的设计模式相关文章