域驱动设计 – DDD:在哪里保留域接口,基础架构?

前端之家收集整理的这篇文章主要介绍了域驱动设计 – DDD:在哪里保留域接口,基础架构?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
将基础层中所有的域层(模块,模型,实体,域服务等)的所有接口分组是否有意义?如果没有,创建一个将所有这些组合到一个共享库中的“共享”项目/组件是否有意义?毕竟,“基础设施层”的定义包括“域,应用程序和UI层的共享库”。

我正在设计围绕DDD层的代码库:UI,Application,Domain,Infrastructure。这将会恭维4个项目。我的观点是,您可以从域层引用基础设施层。但是,如果您定义了Domain Layer项目中的接口,对于IPost,那么当您定义IPostRepository.Save(IPost post)方法时,必须从基础架构项目引用域图层项目时,将会有一个循环引用。因此,“定义共享库中的所有接口”的想法。

也许存储库不应该期望一个对象保存(IPostRepository.Save(IPost post);而是期望对象的参数(可能是Save()中的一组长的params)),可以是一个理想的情况,显示对象何时变得过于复杂,并且应该查看其他值对象。

思考?

埃里克, 我离开了一对夫妇,所以原谅我这么晚回答。 关于在哪里放置存储库,我个人总是将存储库放在专用的基础架构层(例如MyApp.Data.Oracle)中,但是在域层中声明存储库必须符合的接口。 在我的项目中,应用层必须访问域和基础架构层,因为它负责配置域和基础设施层。 应用层负责将适当的基础设施注入到域中。该领域不知道它在谈论哪个基础设施,它只知道如何调用它。当然,我使用IOC容器,如Structuremap将依赖项注入到域中。 再次,我没有指出这是DDD建议构建您的项目的方式,只是方式,我架构我的应用程序。 干杯。
原文链接:https://www.f2er.com/javaschema/282149.html

猜你在找的设计模式相关文章