2011-08-09 9 views
6

Zacząłem odwracać się od normalnego sposobu tworzenia aplikacji internetowych w MVC i rzuciłem okiem na Domain Driven Design - DDD.Porządkowanie struktury katalogów mojej aplikacji internetowej opartej na DDD?

od konieczności Models sam mam teraz Collections, Entities, DataMappers & Repositories w mojej aplikacji do pracy. Pełne oddzielenie i modułowość na pewno, ale teraz moja struktura katalogów to nic innego jak kompletny bałagan!

Ponieważ nigdy nie pracowałem z aplikacją DDD w przeszłości, nie mam pojęcia, jak uporządkować strukturę plików.

Czy poniżej będzie odpowiednia struktura katalogów?
Uwaga: Używam PHP5, ale uważam, że to pytanie jest blisko agnostyki językowej.

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

Odpowiedz

5

Myślę, że ma sens, ale, że ma zamiar oddzielić moduły do ​​co warstwa są w, a następnie co robią. Na przykład, w tej strukturze, jeśli chcesz uwierzytelniania i drukowania moduły, to musiałby chyba coś takiego:

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

Pracując w systemie jak ten, co mogę powiedzieć o jednej rzeczy, to staje się bardzo trudne aby zachować granice między modułami między powiązaniami, tylko dlatego, że ludzie pracują w warstwach i myślą o warstwach jako "wszyscy razem". Z organizacyjnego punktu widzenia, nie bardzo mi się podoba, że ​​muszę mieć trzy katalogi na poziomie katalogu głównego, które mogą pracować z konkretnym modułem. Organizujemy projekty w katalogach, aby ułatwić nam radzenie sobie, a nie kompilator.

Gdybym robił to ponownie, oddzielałbym niektóre rzeczy od po warstwie, powiedz kod UI, na jednym poziomie, a kod biznesowy na innym, ale potem przez moduł pod tym. Przypuszczam, że jest bardziej hybrydowy, ale może lepiej dla niego.

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

Gdzie umieścić swoje wartościowe przedmioty? – n3wb

Powiązane problemy