域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则

域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则,第1张

概述如果您有一个域对象,并且您希望对该域对象的责任做一些有用和中心的事情,如确保其有效,则有时需要访问相关对象的状态才能执行此验证. 如何避免域对象需要调用到存储库或数据访问层?即使使用延迟加载,由于性能,您也不能总是走集合关系,并且您经常希望在域对象中执行查询.您可以将依赖注入资源库实现到域中,但不是真正纯粹的并且使测试复杂化. 我一直放松的东西,并允许从域访问到使用DI的存储库.我没有看到如何在复 如果您有一个域对象,并且您希望对该域对象的责任做一些有用和中心的事情,如确保其有效,则有时需要访问相关对象的状态才能执行此验证.

如何避免域对象需要调用到存储库或数据访问层?即使使用延迟加载,由于性能,您也不能总是走集合关系,并且您经常希望在域对象中执行查询.您可以将依赖注入资源库实现到域中,但不是真正纯粹的并且使测试复杂化.

我一直放松的东西,并允许从域访问到使用DI的存储库.我没有看到如何在复杂的应用程序中拥有一个“纯粹的”域层的清晰示例,这个层不是贫血的,并且有一个服务/应用程序层做所有的咕噜声,弄乱了域对象的内部.

解决方法 >如果对象是一个值对象,它就是
应该是不变的和验证的
施工期间
>如果对象
是一个根集合,它的
自己的国家足以告诉你
如果有效,您可以添加
一种验证方法,其中
通过聚合级联.
最后,我认为这是你的主要
关心,如果你需要访问
几个相关的对象(即
不在同一个集合)确保
其中一个是有效的,你
最终需要驱逐出来
特定验证服务中的逻辑.

我认为将服务和存储库注入实体不是最佳选择.创建专用服务似乎更合适,我不明白为什么会导致您有贫血域对象.

简而言之,如果您可以在不依赖服务或存储库的情况下验证对象状态,请让对象在聚合根级别处理它.当您需要查询服务或存储库时,或者当您需要其他实体时,强烈地考虑将该逻辑移到对象之外.

总结

以上是内存溢出为你收集整理的域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则全部内容,希望文章能够帮你解决域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1094635.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存