如何避免域对象需要调用到存储库或数据访问层?即使使用延迟加载,由于性能,您也不能总是走集合关系,并且您经常希望在域对象中执行查询.您可以将依赖注入资源库实现到域中,但不是真正纯粹的并且使测试复杂化.
我一直放松的东西,并允许从域访问到使用DI的存储库.我没有看到如何在复杂的应用程序中拥有一个“纯粹的”域层的清晰示例,这个层不是贫血的,并且有一个服务/应用程序层做所有的咕噜声,弄乱了域对象的内部.
解决方法 >如果对象是一个值对象,它就是应该是不变的和验证的
施工期间
>如果对象
是一个根集合,它的
自己的国家足以告诉你
如果有效,您可以添加
一种验证方法,其中
通过聚合级联.
最后,我认为这是你的主要
关心,如果你需要访问
几个相关的对象(即
不在同一个集合)确保
其中一个是有效的,你
最终需要驱逐出来
特定验证服务中的逻辑.
我认为将服务和存储库注入实体不是最佳选择.创建专用服务似乎更合适,我不明白为什么会导致您有贫血域对象.
简而言之,如果您可以在不依赖服务或存储库的情况下验证对象状态,请让对象在聚合根级别处理它.当您需要查询服务或存储库时,或者当您需要其他实体时,强烈地考虑将该逻辑移到对象之外.
总结以上是内存溢出为你收集整理的域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则全部内容,希望文章能够帮你解决域驱动设计 – 如何避免贫血域层,仍然有丰富的验证和业务规则所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)