Domanda

Attualmente sto determinare l'entità, gli oggetti di valore e aggregazioni di sistema.Dicono che i seguenti Soggetti sono stati identificati:

Cliente, CustomerEmail, E-Mail, CustomerAddress, Indirizzo, AddressType

dove i Clienti -> e-Mail è un relazioni molti a molti, così come i Clienti -> Indirizzi (con un tipo di indirizzo).Queste relazioni sono rappresentati dalla CustomerAddress e CustomerEmail rapporto di oggetti.

Inizialmente ho pensato che questo era dritto in avanti:

Soggetti:Cliente, CustomerEmail, CustomerAddress Oggetti Di Valore:E-Mail, Indirizzo, AddressType

con una aggregazione di root per un aggregato che contiene tutte le Entità e VO sopra.

Il problema che ho (e questo potrebbe essere solo io sto imparando circa i concetti di aggregati come andare avanti) dici di avere un Fornitore di Entità che rispecchia il sopra Cliente di aggregazione, utilizzando lo stesso Indirizzo e-Mail gli oggetti di valore.In questo caso, quando un Cliente viene eliminato l'indirizzo e-mail non dovrebbero essere eliminate, come un Fornitore, o anche un altro cliente può ancora essere di riferimento.Ho visto un sacco di documentazione che indica quando un aggregato viene eliminato, il tutto entro il limite di aggregazione essere eliminati tutti in una volta.Ho ragione nel ritenere che ciò non vale per gli Oggetti di Valore in forma aggregata (ie.Essi sono immutabili...se abbiamo avuto un colore oggetto di verde in un veicolo di aggregazione...non eliminare il colore solo perché una macchina è stata rimossa) o l'indirizzo e-mail e essere proprio lì entità (e aggregati) come due indirizzi, anche se possono avere gli stessi attributi, sono vere e proprie identità separate (ie.uno è un Fornitore Indirizzo, le altre all'indirizzo di un cliente?)

Se, infine, si sono infatti gli Oggetti di Valore, come funziona la gestione del caso in cui essi devono essere rimossi (Non ai Fornitori o ai Clienti di rimanere il riferimento a un indirizzo) se VO può solo che essere attuate attraverso la loro aggregazione di root?

Ciao

Steve

È stato utile?

Soluzione

Stai pensando di dominio in termini di database.Questo non è raccomandato.

Fornitore di Entità che rispecchia il sopra Cliente di aggregazione

Questo suggerisce manca un concetto di dominio.Che cosa è questo "mirroring" significa per il vostro esperto di dominio?Se davvero c'è un rapporto tra di loro dovrebbe essere esplicitamente modellato.

Si dice che "i Clienti -> e-Mail è un relazioni molti a molti".È significativo per il dominio di un'email è condiviso da più clienti?Se sì che ancora una volta si sono probabilmente manca un concetto.Controllare che cosa il vostro esperto di dominio ha da dire riguardo a questo rapporto.Se non è molti a molti, ma uno a molti, che forse l'email è un oggetto di valore che il cliente entità "possiede".Ora, se il cliente possiede anche l'email o l'indirizzo che si può eliminare (o agire su di esso) senza alcuna restrizione.

Una delle cose più difficili in DDD è che si finisce sempre per cercare di condivisione tra enti aggregati.Non.Sconfiggere il buco punto di Aggregazione - la consistenza di confine.Invece, con l'aiuto di esperti di dominio identificare i mancanti di concetti di chiarire i confini tra ARs.

So che tutti i suoni astratti ( ho chiesto domande come questa in passato ), ma la verità è che solo voi esperti di dominio può aiutare a modellare il dominio di meglio.

E come ultimo consiglio - re-re X 100)lettura di Eric Evans libro di solito aiuta :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top