In DDD sono oggetti valore sempre alle foglie di un albero delle relazioni?

3

Se ho un album fotografico in cui ogni foto può essere commentato, i commenti devono essere entità o valore oggetto in questi casi:

  1. I commenti possono essere aggiunti solo in modo anonimo (ad esempio, i commenti non hanno alcuna relazione con nulla tranne la foto).
  2. I commenti possono essere aggiunti dagli utenti registrati (ad esempio, ci sarà una relazione tra il commento e l'entità utente).
  3. I commenti possono contenere commenti (ad esempio 1 utente che risponde a un altro).

Penso che modellare un commento come oggetto valore nel primo caso suona ragionevole dato che un commento non avrà alcuna relazione con altre entità.

Tuttavia, per quanto riguarda il 2 ° e il 3 ° caso? La necessità di identificare quale utente ha pubblicato quale commento lo modifica da un oggetto valore in entità?

    
posta Songo 13.12.2013 - 16:34
fonte

3 risposte

2

Ecco due post eccellenti su come identificare cos'è un value object e cosa è un entità . So che quando sono bloccato su quale usare, do sempre a questi articoli una lettura.

Per aiutarti a scegliere quale utilizzare, pensa al ciclo di vita dell'oggetto Commenti .

Oggetto valore

"An object that represents a descriptive aspect of the domain with no conceptual identity is called a VALUE OBJECT. VALUE OBJECTS are instantiated to represent elements of the design that we care about only for what they are, not who or which they are." [Evans 2003]

Ente

"An ENTITY is anything that has continuity through a life cycle and distinctions independent of attributes that are important to the application’s user." [Evans 2003]

Dopo aver letto gli articoli, in particolare quello di Value Objects, e la storia sull'identificazione di un bambino, chiediti:

  • Può esistere un commento senza Foto ??
  • Se tutte le entità sono uniche, cosa renderebbe un commento univoco?
  • Gli oggetti valore sono immutabili, se cambio un commento, come influisce su un oggetto valore commento ?
risposta data 13.12.2013 - 16:52
fonte
0

I link di Gibson sono utili, ma la risposta breve è:

Comments are not value objects, in any of the listed scenarios.

Potresti modellare i commenti su una foto in Scenario 1 come attributo di una foto contenente una raccolta di stringhe, nel qual caso non hai affatto bisogno di un "oggetto" per loro.

Negli altri due scenari, le relazioni richiedono un'identità per un commento, il che rende Comment un'entità.

    
risposta data 14.12.2013 - 06:02
fonte
-2

Per approfondire la risposta di Steven.

I commenti sono un'entità in questo caso non valori.

Due oggetti valore sono considerati uguali se i loro attributi possono definire la loro uguaglianza. Nel tuo caso diciamo, se i loro sono due commenti con lo stesso testo in essi e pubblicati dallo stesso utente, questi due commenti saranno lo stesso oggetto? Penso che la risposta sia no. È possibile che un utente aggiunga un nuovo commento con lo stesso testo del commento precedente.

Quindi ci deve essere qualche altro identificatore che distingue questi due commenti oltre ai loro attributi rendendoli un'entità.

Un altro esempio potrebbe essere se due foto diverse hanno commenti di testo / utente simili, anche se quei commenti dovrebbero avere due identità separate.

Quindi ENTITY:)

    
risposta data 07.03.2017 - 07:48
fonte

Leggi altre domande sui tag