2009-11-23 6 views

risposta

9

Sì, è molto utile poter dire la differenza, in particolare quando si progettano e si implementano i tipi.

Una delle differenze principali è quando si tratta di affrontare l'uguaglianza, dal momento che le entità dovrebbero avere un comportamento molto diverso rispetto agli oggetti valore. Sapere se il proprio oggetto è un'entità o un oggetto valore indica come implementare l'uguaglianza per il tipo. Questo è utile di per sé, ma non si ferma qui.

Le entità sono tipi modificabili (almeno per concetto). L'idea alla base di un'entità è che rappresenta un concetto di dominio con una progressione nota della vita (cioè è creato, subisce diverse trasformazioni, è archiviato e forse eventualmente eliminato). Rappresenta lo la stessa particolare "cosa" anche se passano mesi o anni e cambia stato durante il percorso.

Valore Oggetti, d'altra parte, rappresentano semplicemente valori senza alcuna identità intrinseca. Anche se non devi farlo, si prestano molto bene per essere implementati come tipi immutabili. Questo è molto interessante perché qualsiasi tipo immutabile è per definizione thread-safe. Mentre ci stiamo spostando verso l'era multi-core, sapere quando implementare un oggetto come un tipo immutabile è molto prezioso.

Aiuta anche molto nei test delle unità quando la semantica dell'uguaglianza è ben nota. In entrambi i casi, l'uguaglianza è ben definita. Non so quale lingua usi, ma in molti linguaggi (C#, Java, VB.NET) l'uguaglianza è determinata dal riferimento di default, che in molti casi non è particolarmente utile.