Les objets de valeur sont des objets légers et immuables qui n'ont pas d'identité.
Bien que leurs valeurs soient plus importantes, ils ne sont pas de simples objets de transfert de données (DTO)
Les objets de valeur sont un bon endroit pour placer des calculs complexes, en déchargeant la logique de calcul lourde des entités.
Ils sont beaucoup plus faciles et plus sûrs à composer, et en déchargeant les entités de la logique de calcul lourde, ils aident les entités à se concentrer sur leur rôle de suivi du cycle de vie.
Certains attributs et comportements peuvent être déplacés hors de l'entité elle-même et placés dans des objets de valeur.
Les objets de valeur ne doivent pas être un simple regroupement commode d'attributs mais doivent former un concept bien défini dans le modèle de domaine.
Cela est vrai même s'il ne contient qu'un seul attribut. Lorsqu'il est modélisé comme un tout conceptuel, il est porteur de sens lorsqu'il est transmis et peut faire respecter ses contraintes.
Imaginez que vous ayez une entité Utilisateur qui a besoin de l'adresse d'un utilisateur. Habituellement, une adresse est simplement une valeur complexe qui n'a pas d'identité dans le domaine et qui est composée de plusieurs autres valeurs, comme le pays, la rue, le code postal etc..., elle peut donc être modélisée et traitée comme un Value Object avec sa propre logique métier.
Un objet de valeur n'est pas seulement une structure de données qui contient des valeurs. Il peut également encapsuler la logique associée au concept qu'il représente.
En savoir plus sur les Value Objects :