在DDD中保存存储库实现的位置?

时间:2014-08-25 14:19:29

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

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和洋葱架构之间有什么区别?

1 个答案:

答案 0 :(得分:2)

  1. 截至声明:

    一个。高级模块不应该依赖于低级模块。两者都应该取决于抽象。

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

    你的理解还可以。您将域层与接口耦合,而不是实现。

  2. 是的,基础设施是最好的选择。

  3. 应该没问题。

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

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