【问题标题】:Where to Keep the Repository implementations in DDD?在 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和洋葱架构有什么区别?

【问题讨论】:

    标签: laravel-4 domain-driven-design repository-pattern dao onion-architecture


    【解决方案1】:
    1. 截至声明:

      A.高级模块不应该依赖于低级模块。两者都应该依赖于抽象。

      B.抽象不应依赖于细节。细节应该取决于抽象。

      你的理解没问题。您将域层与接口而不是实现耦合。

    2. 是的,基础设施是最适合它的地方。

    3. 应该没问题。

    4. 存储库的实现,是的。

    5. 领域驱动设计不是一种技术或方法。 DDD 提供了一种实践结构和术语,用于制定设计决策,重点关注和加速处理复杂领域的软件项目。建筑是完全不同的东西。您可以将任何架构与 DDD 结合使用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2020-09-27
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多