Jestem początkującym programistą DDD, pracuję nad małymi, prostymi domenami, aby mieć głowę na temat wszystkich zasad projektowania.Relacje między podmiotami w DDD
Mam tę prostą domenę: instytucje (Institution
) i ich dostępne spoty WiFi (Place
) są przechowywane w bazie danych. Żadne miejsce nie może istnieć bez instytucji. Instytucja ma użytkownika menedżera - cesjonariusza (User
), który ma prawo do dodawania nowych miejsc, ponownego przydzielania lub usuwania istniejących.
Code can be found here. Walidacja na obiektach wartości pozostaje na razie. To jest pod wpływem Mathias Verraes on child entities.
Czy to prawidłowy projekt DDD? lub przynajmniej blisko?
Będąc programistą opartym na danych, wciąż zastanawiam się, jak wyliczyć wszystkie miejsca dla wszystkich instytucji, jeśli reguła uzyskuje dostęp do agregatów za pośrednictwem zagregowanego katalogu głównego?
Czy pomysł wygenerowania Uuid
wewnątrz samej jednostki (Place::create
) jest dobry?
Czy pomysł, że tylko cesjonariusz (User
) może dodawać/usuwać miejsca, jest wyrażany w samej domenie lub powinien być odpowiedzialny za klienta? W takim przypadku byłoby rozsądnie, gdyby cesjonariusz wiedział o swojej zarządzanej instytucji (institutionId
w User
?).
Czy Institution::placeById
nie łamie żadnych zasad DDD? Może to odpowiedzialność repozytorium?