2011-08-09 56 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

相關問題