1)根据域驱动设计,域层应该只有存储库接口,实现不应该是域层的一部分 - 如果我的理解错误,请告诉我?
2)如果Repository实现不应该是Domain Layer的一部分,那么我应该在哪里保留Repository实现(在Infrastructure中?)
3)如果我想让我的设计流程如下所示,以下目录结构是否可建议:(我使用的是DAO而不是ORM)
控制器< --- dto --->域名服务< ---- dto ---> RepositoryImpl< ---> DAOImpl
Directory structure
+ Infrastructure
+--- Logging
+--- Caching
+ Applicaton
+---- Service1Controller
+ DomainLayer
+---- Service1Impl
+---- Service2Impl
+ DataAccessLayer
+----Repositories
+----------Service1Repositories
+----------Service2Repositories
+----DAO
+----------Service1DAO
+----------Service2DAO
4)存储库可以是数据访问层的一部分吗?
5)DDD是架构还是设计?如果它是架构,那么DDD和洋葱架构之间有什么区别?
答案 0 :(得分:2)
截至声明:
一个。高级模块不应该依赖于低级模块。两者都应该取决于抽象。
B中。抽象不应该依赖于细节。细节应取决于抽象。
你的理解还可以。您将域层与接口耦合,而不是实现。
是的,基础设施是最好的选择。
应该没问题。
存储库的实现,是的。
域驱动设计不是一种技术或方法。 DDD提供了一种实践和术语结构,用于制定设计决策,重点关注并加速处理复杂域的软件项目。架构是完全不同的东西。您可以使用DDD的任何架构。