Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/138.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 在域驱动器设计中,您使用什么方法来确定聚合根?_Domain Driven Design_Aggregate_Root - Fatal编程技术网

Domain driven design 在域驱动器设计中,您使用什么方法来确定聚合根?

Domain driven design 在域驱动器设计中,您使用什么方法来确定聚合根?,domain-driven-design,aggregate,root,Domain Driven Design,Aggregate,Root,将领域驱动设计应用于项目时,如何确定聚合根 例如,在标准的电子商务网站中,您可能会说订单是一个,用户是另一个。 但是如果你的用户属于某家公司呢?这是否使您的公司成为聚合根 我感兴趣的是人们计算聚合根的方法,以及如何识别选择不当的聚合根。识别聚合根的一个好方法是使用“删除”测试。在您的域中,如果删除根目录,将删除哪些内容?通过这种方式,您可以识别域对象所有权,这是聚合的一个特征 聚合也会创建一致性边界,因此您的根用户应该对对象图的其余部分“隐藏”聚合元素,并检查它们的一致性和应该保持的不变量。聚合

将领域驱动设计应用于项目时,如何确定聚合根

例如,在标准的电子商务网站中,您可能会说订单是一个,用户是另一个。 但是如果你的用户属于某家公司呢?这是否使您的公司成为聚合根


我感兴趣的是人们计算聚合根的方法,以及如何识别选择不当的聚合根。

识别聚合根的一个好方法是使用“删除”测试。在您的域中,如果删除根目录,将删除哪些内容?通过这种方式,您可以识别域对象所有权,这是聚合的一个特征


聚合也会创建一致性边界,因此您的根用户应该对对象图的其余部分“隐藏”聚合元素,并检查它们的一致性和应该保持的不变量。聚合中的对象仅引用根(彼此不引用)。因此,如果您在域模型中发现类似的内容,可能会建议您有一个聚合根。

对,因此我有一个用户实体,可以执行一组操作,例如进行销售、更新其配置文件、e.t.c。看起来该用户将是一个根聚合。但是,公司有一组用户。删除公司将删除用户。这是使一家公司成为聚合根,还是两者都是聚合根@Robert您不必为每个多重关联使用聚合,也可以使用复合。什么最适合你的需要取决于你。聚合用于简化域模型,但您不必使用它。