2011-08-09 58 views
6

我已经开始远离创建我的web应用程序的正常MVC方式,并且已经看了Domain Driven Design - DDD。组织我的基于DDD的Web应用程序的目录结构?

单从有Models,我现在有CollectionsEntitiesDataMappers & Repositories在我的应用程序一起工作。完全成熟的分离和模块化是肯定的,但现在我的目录结构不过是一团糟!

因为我从来没有在过去使用过DDD应用程序,所以对于如何组织我的文件结构还没有太多想法。

下面是一个合适的目录结构吗?
注:我使用PHP5,但我认为这个问题接近语言不可知论。

/application 
    /common 
     /libraries 
     /helpers 
    /temp 
     /cache 
    /domain 
     /collections 
     /entities 
     /datamappers 
     /repositories 
    /ui 
     /controllers 
     /view 

回答

5

,我觉得是有道理的,但是,那是要你的模块分成它们是什么层在,而不是他们做什么。例如,在这种结构中,如果你想要一个身份验证和打印模块,您将有可能是这样的:

/common 
     /helpers 
      /Authentication 
       /AuthenticationService.php 
      /Printing 
       /PrintingService.php 
    /domain 
     /entities 
      /Authentication 
       /Identity.php 
      /Printing 
       /Printer.php 
     /datamappers 
      /Authentication 
       /IdentityDataMap.php 
      /Printing 
       /PrinterDataMap.php 

在这样的系统中工作过,我可以说一两件事,它变得非常困难保持模块之间的边界不会相互啮合,只是因为人们在图层中工作,并将图层视为“全部在一起”。仅仅从组织的角度来看,我并不喜欢必须打开三个根目录级别的目录才能使用特定的模块。我们将项目组织到目录中,以方便我们处理,而不是编译器。

如果我再次这样做,我会分开一些东西,在一个层面上说UI代码,在另一个层面上说业务代码,但是在那个模块下面。更多的混合我想,但也许更好。

/domain 
     /Printing 
      /entities 
      /datamappers 
      /repositories 
     /Auth 
      /entities 
      /datamappers 
      /repositories 
    /ui 
     /controllers 
     /view 
+6

你会把你的价值对象在哪里? – n3wb

相关问题