Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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
Design patterns 领域驱动的设计聚合_Design Patterns_Domain Driven Design_Repository Pattern - Fatal编程技术网

Design patterns 领域驱动的设计聚合

Design patterns 领域驱动的设计聚合,design-patterns,domain-driven-design,repository-pattern,Design Patterns,Domain Driven Design,Repository Pattern,这个问题实际上是关于聚合,而不是聚合根。 假设你有一个实体的汽车。应用程序显示每个“汽车级别”的列表(聚合)。例如,第一级可能是汽车制造商 像 奥迪, 大众, 此列表是我的“汽车”实体的集合 有没有一种好的方法来处理实体的这种“聚合视图”? 这是我的域中的值对象吗 我应该用4节课来描述汽车吗?这会有很多重复的代码吗? 或者我应该为每个级别使用完全“Car”实体作为表示,但使用接口指定可以访问的字段吗 在域驱动设计中,聚合只能由其根访问。聚合可以由实体和值对象组成。根据您的需要,您可以为您的域提

这个问题实际上是关于聚合,而不是聚合根。 假设你有一个实体的汽车。应用程序显示每个“汽车级别”的列表(聚合)。例如,第一级可能是汽车制造商

像 奥迪, 大众,

此列表是我的“汽车”实体的集合

有没有一种好的方法来处理实体的这种“聚合视图”? 这是我的域中的值对象吗

我应该用4节课来描述汽车吗?这会有很多重复的代码吗?
或者我应该为每个级别使用完全“Car”实体作为表示,但使用接口指定可以访问的字段吗

在域驱动设计中,聚合只能由其根访问。聚合可以由实体和值对象组成。根据您的需要,您可以为您的域提供许多功能(它们不应作为实体或值对象持久化)。 现在在您的示例中,您可以拥有汽车实体(也可以是聚合的根),并拥有该实体的批次特征,例如,汽车制造商显然是一个价值对象

我应该以4节课来描述汽车吗?这会有很多重复的代码吗?或者我应该在每个级别使用完全“Car”实体作为表示,但使用接口指定可以访问的字段吗?

正如我提到的,您可以使用大量的枚举、类和接口来减少代码的重复,但请记住,您最终应该持久化实体和值对象。 我建议你把汽车的颜色、制造、型号等特征分开。。。并在聚合根目录中协作这些功能以持久化。
您最好在现实世界的应用程序中看到一些关于DDD的示例,采集所有样本并查看文章。

考虑我的汽车实体有大约200个不同的字段(这是实体可能具有的详细程度),并且是汽车实体(完全指定的汽车)与不太指定的汽车之间的唯一区别,称为“汽车级别4”是缺少的电机代码。因此,我的“car level4”不是一个真实的实体,而是与我的car实体共享199个字段。现在我想查询这些“汽车级别4”的列表。但我用什么实体来表示这个列表呢?在对域进行建模时,不要考虑数据库字段,数据库字段是一个存储库问题。只要试着正确建模。现在,如果您的汽车有不同的场景,您可以将汽车视为一个模块,并放置不同的聚合(您称之为级别)。我必须再说一遍,这一切都取决于你的模型。对于字段,我指的是属性,都在内存中。问题其实是关于建模的。我不确定什么是“四级车”,它不是一辆完整的车,所以它不是一辆完整的车。我应该将它表示为一个接口并使用car实体吗?我是否应该对汽车级别使用继承,如汽车级别1->汽车级别2->汽车级别3->汽车级别4->汽车?还是更好的构图?我应该创建新对象吗?我只是想知道是否有什么好方法可以处理我需要从存储库/服务查询的实体的“部分”。因此,如果您的域中有多种级别的汽车,您可以有一个基本的“汽车级别”类,它的属性可以从基础继承其他汽车级别。如果要检索实体和值对象,可以根据需要在存储库中进行查询。