gpt4 book ai didi

c# - 是否有一种通用的 DDD 模式来处理域对象的欠载?

转载 作者:太空狗 更新时间:2023-10-29 21:27:03 25 4
gpt4 key购买 nike

有时,在处理应用程序时,尤其是在尝试遵循正确的 OOD 和 DDD 模式时,我们最终会得到域类,例如 Customer。然后我们有一些存储库来加载这个对象,一切都很好很干净。

然后应用程序变得越来越复杂,我们开始优化性能。我们经常发现自己处于这样一种情况,我们并不真正需要加载,比如说,一个完整的 Customer 对象列表,而可能只是 ID 和名称,或者一小部分属性(例如显示在网格中)

我经常看到的解决方案包括:

  1. 加载不足 域对象,所以基本上我们仍会使用 Customer 类,但我们会使用单独的存储库方法来加载这些对象,并且该存储库方法将从数据库中仅加载必填字段,并在对象中填充相应的属性。剩余的 Customer 字段将保持其默认值。这是一个简单的解决方案,但如果开发人员(或现有代码)期望加载某些属性,则可能会导致许多错误。

  2. Purpose-classing 我们在其中创建类,例如 CustomerIdNameCustomerInfoCustomerHeader,其中包含只有我们需要的属性。这种方法可能会创建大量的类,但通过仔细的子类化是可行的。不过,它似乎脱离了无处不在的领域语言概念。

那么在 DDD 世界中是否有一些普遍接受的约定来处理这些问题?我试着用谷歌搜索这个,但没能找到任何权威的东西。

或者这可能只是经典 DDD 方法的一个众所周知的限制,而 CQRS 或其他方法在这些情况下会更好?

最佳答案

我认为第二种方法是要走的路。我们正在我们的项目中这样做,但仅适用于只读 DTO 类。我想只要您不使用它们进行插入/更新就没问题。

还有那个answer你可能感兴趣:

关于c# - 是否有一种通用的 DDD 模式来处理域对象的欠载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32955382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com