我试图设计一个具有丰富模型(贫血模型是不好的OO实践)的领域层。我还从DDD了解到,它不排除服务对象,并且良好的领域层设计是将领域逻辑分成领域模型和服务对象的健康平衡。不过,如果业务逻辑应该在域模型和服务对象之间划分,那么应该在哪里绘制线?换句话说,我如何知道业务逻辑是属于域模型还是服务对象?是否有经验法则规定某些行为应该转到域模型而其他行为属于服务对象?请让我知道你是否可以提供一点点提示,谢谢。域模型和服务对象中的业务/域逻辑
0
A
回答
1
1
良好的领域层设计正确地模拟领域概念和用例。由您决定什么是聚合根(AR)以及作为服务的资格。每个人都有自己的经验和喜好。
个人而言,我使用服务来实现用例。这意味着它们具有状态,虽然非常不可变,状态是实现细节(我可以用静态方法写入相同的事情,将所有的deps作为方法的参数传递,而不是在构造函数中注入必需的存储库和其他服务)。
最重要的是要确保您了解业务概念,行为和用例。这应该是显而易见的,许多人对此很浅薄,而且结果的设计很不妥,难以维护。
我建议采用更自然的方法。只需开始建模,不要问自己它是一个AR,还是价值对象,或者它应该是一个服务等等。随着你的进步,你会很清楚。
你可以做的最糟糕的事情是提出一些人为的规则/约束,并根据这些规则为你的域(和实际的整个应用)建模。 DDD是关于让域驱动设计。术语和技术细节是实现细节,可随时更改,不要将它们用作设计指南。
相关问题
- 1. 域对象中的业务逻辑
- 2. 域逻辑和业务逻辑
- 3. 业务逻辑和服务
- 4. 模型逻辑和服务层逻辑
- 5. 业务逻辑应该放在域还是服务中?
- 6. 如何将业务逻辑添加到域驱动设计中的域服务?
- 7. 域对象和服务
- 8. 贫血域模型和域服务
- 9. 逻辑模型和领域模型
- 10. 模糊逻辑域模型
- 11. 在模型中实现业务逻辑
- 12. RIA服务中的业务逻辑
- 13. 业务对象和业务逻辑有什么区别
- 14. 存储库,服务或域对象 - 逻辑属于哪里?
- 15. 如何分离模型(业务逻辑和商店逻辑)?
- 16. 业务逻辑的PHP对象服务器
- 17. 服务层模式:跨越多个服务的业务逻辑
- 18. MVC业务逻辑访问模型
- 19. 您的域模型对象中应该有多少逻辑
- 20. 业务逻辑
- 21. 逻辑模型与域模型
- 22. 服务器端业务逻辑和WCF RIA服务
- 23. C#业务逻辑,业务对象,数据访问,项目
- 24. EF6和业务逻辑层
- 25. MVVM和业务逻辑层
- 26. 将域业务逻辑包含在域驱动架构中的地方
- 27. 域模型 - 业务验证/错误
- 28. Django中的业务逻辑
- 29. 控制器逻辑与服务/业务层逻辑
- 30. 模型和域对象
知道域服务不应该有状态并不意味着它不能检查它正在使用的对象的状态(它们可以依赖于它们操作的聚合状态)。基本transferFundsDomainService可能需要检查是否有一个帐户为事务打开,如果不是,服务将失败。 Jimmi Bogard也有一些推动不当设计(即实体验证)的帖子。 –
是的,的确,谢谢澄清 –