Domain driven design DDD:在实体上组织100个属性

Domain driven design DDD:在实体上组织100个属性,domain-driven-design,Domain Driven Design,如何组织具有100个属性的实体?可以说有100个属性,有几个值对象(因为一些属性有自己的2或3个属性)。但问题是,如何处理大量的属性 我正在使用DDD从头开始重新创建我们的模型,当前的问题是如何组织分解为许多子集的主要实体之一。目前,它被编写成大约有十几个子集的属性。比如50+属性的CarInfo(),80+属性的CarRankings(),CarStats(),CarColor()等等 将其视为存储在单个实体根上的海量数据 为了对大量属性集合进行分组的简单目的而使用服务是否合适?类似于CarI

如何组织具有100个属性的实体?可以说有100个属性,有几个值对象(因为一些属性有自己的2或3个属性)。但问题是,如何处理大量的属性

我正在使用DDD从头开始重新创建我们的模型,当前的问题是如何组织分解为许多子集的主要实体之一。目前,它被编写成大约有十几个子集的属性。比如50+属性的CarInfo(),80+属性的CarRankings(),CarStats(),CarColor()等等

将其视为存储在单个实体根上的海量数据

为了对大量属性集合进行分组的简单目的而使用服务是否合适?类似于CarInfo服务,它将返回一个Car()对象以及一个大集合或排序

另一个想法是查看数据是如何显示的。没有一个视图显示所有这些数据。相反,他们是根据他们的主观问题分开的。像CarInfo一样,它显示了关于汽车的所有信息。另一个是显示汽车所有统计信息的汽车统计信息。因此,从这个意义上讲,应用程序层可以构建UI所需的底层细节。但是,我仍然需要一种在域中存储它的方法


我只想在上面放一些xml属性包,然后在白天打电话过来。哈哈

这是一个棘手的问题。你有一个有很多分支的聚合根。但听起来好像您的用户只在特定时间处理特定集合。你可以试着修剪一下这棵树

例如,在您的汽车示例中,如果您的用户正在比较不同汽车的排名,您可以将其视为自己的模块或子系统。如果具体任务是找出哪个排名比其他排名好,则无需加载与每个排名相关的详细汽车数据

请记住,即使数据可能存储在数据库的父子层次结构中,也不一定意味着您的域将以相同的方式构造

通过查看用户将对数据执行的任务或功能,您可能会发现一些概念,这些概念有助于将巨大的聚合分解为更易于管理的块


如果你需要将完整的根和它的所有分支组装起来,我想你肯定需要某种服务来把所有的东西组合在一起。

< P>我认为你应该考虑在不同的相关通路中分裂这样一个实体。因此,您将在不同的BC中拥有不同的
Car
s(也就是不同的名称空间),并且每一个都将只处理与该特定方面相关的信息


这样,如果需要更深入的了解,您很可能只需要重构一个BC,而不会影响其他BC。

我同意,服务是将所有这些集合集中到聚合根上的唯一方法。我最终将属性分组为块,称为集合。因此,它将是CarInfo Collection、CarRankingCollection等,并且随着属性的扩展和收缩,它存储为Xml属性包。我很高兴您找到了一种适合您的情况的方法。处理有很多很多属性的物品是很困难的。当我从事房地产系统的工作时,我们一直在处理类似的问题。如果没有行之有效的方法怎么办?我也有类似的情况,我相信总量是不能分割的。想象-将html文档对象模型填充到对象中。对我来说,DDD似乎不适合这里。