2011-08-09 8 views
6

Webアプリケーションを作成する通常のMVCの方法を見直し始め、ドメイン駆動型デザイン(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 

を働いたので、私は一つのことのために言うことができる、それは非常に難しい取得します人がレイヤーで作業しているというだけで、モジュール間の境界をインターメッシュから守り、レイヤーを「すべて一緒に」考えているからです。組織の観点からは、特定のモジュールで作業するために3つのルートレベルのディレクトリを開く必要はありません。私たちはプロジェクトをディレクトリに整理して、コンパイラではなく対処しやすくします。

もし私がもう一度やっていたら、いくつかのレイヤーで、UIコード、1つのレベル、別のビジネスコードをレイヤー別に分けることにします。私が思っているハイブリッドのほうが多いですが、おそらくもっと良いでしょう。

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

ここで、値オブジェクトを配置しますか? – n3wb

関連する問題