Сводится к существенному различию, идентичность имеет значение для сущностей, но не имеет значения для объектов стоимости. Например, чье-то Имя является ценностным объектом. Сущность Customer может состоять из имени клиента (объекта значения), List OrderHistory (списка объектов) и, возможно, адреса по умолчанию (обычно это объект значения). Клиентский объект будет иметь идентификатор, и каждый заказ будет иметь идентификатор, но имя не должно быть; как правило, в пределах объектной модели идентичность адреса, вероятно, не имеет значения.
Объекты значений обычно могут быть представлены как неизменяемые объекты; изменение одного свойства объекта-значения по существу разрушает старый объект и создает новый, потому что вы не так озабочены идентичностью, как содержанием. Правильно, метод экземпляра Equals в Name возвращает «true», если свойства объекта идентичны свойствам другого экземпляра.
Однако изменение какого-либо атрибута объекта, такого как Клиент, не разрушает клиента; Клиентский объект обычно изменчив. Идентичность остается прежней (по крайней мере, после сохранения объекта).
Вы, вероятно, создаете объекты-ценности, не осознавая этого; всякий раз, когда вы представляете какой-либо аспект сущности, создавая детализированный класс, вы получаете объект значения. Например, класс IPAddress, который имеет некоторые ограничения на допустимые значения, но состоит из более простых типов данных, будет объектом значения. EmailAddress может быть строкой или объектом-значением со своим собственным набором поведений.
Вполне возможно, что даже элементы, имеющие идентичность в вашей базе данных, не имеют идентичности в вашей объектной модели. Но самый простой случай - это совокупность некоторых атрибутов, которые имеют смысл вместе. Вы, вероятно, не хотите иметь Customer.FirstName, Customer.LastName, Customer.MiddleInitial и Customer.Title, когда вы можете составить их вместе как Customer.Name; вероятно, к тому времени, когда вы подумаете о постоянстве, они будут представлять собой несколько полей в вашей базе данных, но вашей объектной модели все равно.