Auf das Wesentliche reduziert, ist Identität für Entitäten wichtig, für Wertobjekte jedoch nicht. Zum Beispiel ist der Name einer Person ein Wertobjekt. Eine Kundenentität kann aus einem Kundennamen (Wertobjekt), List <Order> OrderHistory (Liste der Entitäten) und möglicherweise einer Standardadresse (normalerweise ein Wertobjekt) bestehen. Die Kundeneinheit hätte eine ID, und jede Bestellung hätte eine ID, ein Name jedoch nicht. Im Allgemeinen spielt die Identität einer Adresse innerhalb des Objektmodells wahrscheinlich keine Rolle.
Wertobjekte können normalerweise als unveränderliche Objekte dargestellt werden. Das Ändern einer Eigenschaft eines Wertobjekts zerstört im Wesentlichen das alte Objekt und erstellt ein neues, da Sie sich nicht so sehr mit Identität als mit Inhalt befassen. Richtig, die Equals-Instanzmethode für Name würde "true" zurückgeben, solange die Eigenschaften des Objekts mit den Eigenschaften einer anderen Instanz identisch sind.
Das Ändern eines Attributs einer Entität wie "Kunde" zerstört den Kunden jedoch nicht. Eine Kundenentität ist normalerweise veränderlich. Die Identität bleibt gleich (mindestens sobald das Objekt beibehalten wurde).
Sie erstellen wahrscheinlich Wertobjekte, ohne es zu merken. Jedes Mal, wenn Sie einen Aspekt einer Entität darstellen, indem Sie eine feinkörnige Klasse erstellen, haben Sie ein Wertobjekt. Beispielsweise wäre eine Klasse IPAddress, die einige Einschränkungen für gültige Werte aufweist, jedoch aus einfacheren Datentypen besteht, ein Wertobjekt. Eine EmailAddress kann eine Zeichenfolge oder ein Wertobjekt mit eigenen Verhaltensweisen sein.
Es ist durchaus möglich, dass selbst Elemente, die eine Identität in Ihrer Datenbank haben, keine Identität in Ihrem Objektmodell haben. Der einfachste Fall ist jedoch eine Zusammenstellung einiger Attribute, die zusammen Sinn machen. Sie möchten wahrscheinlich nicht Customer.FirstName, Customer.LastName, Customer.MiddleInitial und Customer.Title haben, wenn Sie diese zusammen als Customer.Name zusammenstellen können. Es werden wahrscheinlich mehrere Felder in Ihrer Datenbank sein, wenn Sie über Persistenz nachdenken, aber Ihr Objektmodell kümmert sich nicht darum.