在 DDD 中将存储库实现保存在哪里?
Posted
技术标签:
【中文标题】在 DDD 中将存储库实现保存在哪里?【英文标题】:Where to Keep the Repository implementations in DDD? 【发布时间】:2014-10-18 17:28:30 【问题描述】:1) 根据域驱动设计,域层应该只有存储库接口,实现不应该是域层的一部分 - 如果我的理解有误,请指教?
2) 如果存储库实现不应该是域层的一部分,那么我应该将存储库实现保存在哪里(在基础架构中?)
3) 如果我想要这样的设计流程,以下目录结构是否可行:(我使用的是 DAO 而不是 ORM)
控制器 域服务 RepositoryImpl DAOImpl
Directory structure
+ Infrastructure
+--- Logging
+--- Caching
+ Applicaton
+---- Service1Controller
+ DomainLayer
+---- Service1Impl
+---- Service2Impl
+ DataAccessLayer
+----Repositories
+----------Service1Repositories
+----------Service2Repositories
+----DAO
+----------Service1DAO
+----------Service2DAO
4) 存储库可以是数据访问层的一部分吗?
5) DDD 是架构还是设计?如果是架构,那么DDD和洋葱架构有什么区别?
【问题讨论】:
【参考方案1】:截至声明:
A.高级模块不应该依赖于低级模块。两者都应该依赖于抽象。
B.抽象不应依赖于细节。细节应该取决于抽象。
你的理解没问题。您将域层与接口而不是实现耦合。
是的,基础设施是最适合它的地方。
应该没问题。
存储库的实现,是的。
领域驱动设计不是一种技术或方法。 DDD 提供了一种实践结构和术语,用于制定设计决策,重点关注和加速处理复杂领域的软件项目。建筑是完全不同的东西。您可以将任何架构与 DDD 结合使用。
【讨论】:
以上是关于在 DDD 中将存储库实现保存在哪里?的主要内容,如果未能解决你的问题,请参考以下文章