Domain driven design 在DDD中将实体拆分为更小的实体? 如果你认为一个实体在应用程序中的用法不同,它是否有意义呢?也就是说,我使用我的实体并定义一个新实体,其中只包含第一个实体的一些属性。现在我有两个实体重叠,但使用方式不同,但最终保留在同一个数据表中。这些实体将通过不同的存储库访问

Domain driven design 在DDD中将实体拆分为更小的实体? 如果你认为一个实体在应用程序中的用法不同,它是否有意义呢?也就是说,我使用我的实体并定义一个新实体,其中只包含第一个实体的一些属性。现在我有两个实体重叠,但使用方式不同,但最终保留在同一个数据表中。这些实体将通过不同的存储库访问,domain-driven-design,Domain Driven Design,我自己才刚刚开始了解DDD,所以如果我错了,请评论并让我知道。以下是我的想法: 如果要通过不同的存储库访问实体,我认为它应该拥有自己的类。此外,现在重叠的位将来可能不会重叠,如果您使用共享基类,那么您很可能会在此时尝试调整内容,这会弄脏您的域 如果这两个类是独立子域的一部分,那么它们可能应该是独立的。我的想法是基于我记得听到的一个例子的一部分。产品具有多个对消费者重要的属性(定价、描述等),以及多个对仓库人员重要的属性(仓库中的位置、重量、尺寸等)。那一集对我的暗示是,这两个产品应该在域中分别定

我自己才刚刚开始了解DDD,所以如果我错了,请评论并让我知道。以下是我的想法:

如果要通过不同的存储库访问实体,我认为它应该拥有自己的类。此外,现在重叠的位将来可能不会重叠,如果您使用共享基类,那么您很可能会在此时尝试调整内容,这会弄脏您的域

如果这两个类是独立子域的一部分,那么它们可能应该是独立的。我的想法是基于我记得听到的一个例子的一部分。产品具有多个对消费者重要的属性(定价、描述等),以及多个对仓库人员重要的属性(仓库中的位置、重量、尺寸等)。那一集对我的暗示是,这两个产品应该在域中分别定义,而不是一次定义和共享。

如果“在应用程序中使用”是指在不同的视图中显示不同的部分,那么我建议您使用Fowler在其(或者,如果您正在开发WPF应用程序,您可以使用更专门的WPF版本,名为)

但如果你所说的“使用”意味着你将在不同的子域或域的一部分中使用实体的不同属性,那么我同意Chris的观点;你最好将它们分成不同的实体。原因是在你的域模型中,你应该反映实体在特定(子)域中的使用方式域。如果您在不同的情况下使用实体的不同部分,它们在这些设置中可能有不同的含义,这也应该反映在实体的命名中。如果是我,我可能会为每个实体创建一个存储库。在实体和存储库之间建立1:1的映射似乎更有效就我的经验而言,在大多数情况下都是有意义的。但话说回来,就像Chris、Rob Connery和90%尝试DDD的开发人员一样,我对DDD游戏相当陌生,因此我的经验可能会被更有经验的人推翻:)