/ / DDD: "Paese" deve essere un oggetto valore o un'entità? - oop, design basato sul dominio

DDD: il 'paese' dovrebbe essere un oggetto valore o un'entità? - oop, design basato sul dominio

"Paese": oggetto valore o entità in DDD?

Opinioni comunque apprezzate.

E dove conservare la tabella dei nomi / codici dei paesi? DB? XML? In una classe?

Grazie!

risposte:

15 per risposta № 1

Se il tuo dominio è geografico o politico, allorapotrebbe essere un'entità, ma nel caso medio, un paese è solo un valore associato a cose come gli indirizzi. In tal caso, nel contesto del tuo modello a oggetti, è solo un valore.

Per quanto riguarda lo storage, il modello di dominio non si preoccupa molto: puoi utilizzare il database se è conveniente, XML se preferisci e una classe se hai un comportamento associato ai paesi.


10 per risposta № 2

Una delle caratteristiche di un'entità è quellaha un ciclo vitale, cioè cambia nel tempo. Un oggetto valore no. In effetti, gli oggetti valore dovrebbero essere immutabili. Quindi la domanda da porsi è: "L'oggetto del paese cambia nel tempo?"

Un altro aspetto che distingue entità e oggetti valore è che due oggetti valore con le stesse proprietà sono uguali. Quindi se hai un'istanza di paese con il nome "Francia", è il stesso come un'altra istanza di paese con il nome"Francia", anche se sono due casi distinti (supponendo che sia l'unica proprietà del paese per il gusto di questa discussione). Pensa alle stringhe nella maggior parte delle lingue, la stringa "fubar" è uguale a un'altra istanza della stringa "fubar" .

Le entità, d'altra parte, sono distinte anche se hanno le stesse proprietà. Un cliente con il nome "John Smith" potrebbe non essere lo stesso di un altro cliente con il nome "John Smith".

Quindi, date queste caratteristiche dovresti essere in gradodecidere. Poiché può esistere solo una "Francia" e non cambia nel tempo, è probabilmente un oggetto di valore, a meno che la tua app non debba tracciare più di un Paese che potrebbe cambiare nel tempo.


3 per risposta № 3

Immaginare:

Hai un'altra entità - Cliente.
L'entità cliente fa riferimento all'oggetto Paese.
Hai 2 istanze di entità con oggetti Paese riempiti con lo stesso valore (ad esempio "Francia")
Stai eliminando oggetto Paese dalla prima entità (o primo oggetto entità)

  • se vuoi che il paese sia cancellato anche per il secondo oggetto entità
    => Paese è un oggetto entità
  • se si desidera eliminare il paese solo per il primo oggetto entità
    => Paese è un oggetto valore