Question

Nous avons un modèle de domaine simple: Contact, TelephoneNumber et ContactRepository. Le contact est une entité, il a un champ d'identité. TelephoneNumber est un objet de valeur typique: n'a aucune identité et ne peut pas être chargé séparément de l'instance de Contact.

De l'autre côté, nous avons une application Web pour manipuler les contacts. La 1ère page est "ContactList", la page suivante est "Contact / C0001". qui affiche les détails du contact et la liste des numéros de téléphone.

Nous devons implémenter le formulaire de modification des numéros de téléphone. La première approximation consiste à ajouter une page qui sera navigable, comme «ThelephoneNumber / T0001».

Mais ThelephoneNumber est une classe d'objets de valeur et son instance n'a pas pu être identifiée de cette façon.

Quelle est la meilleure pratique pour résoudre ce problème? Comment identifier des objets non identifiables dans les applications sans état?

Était-ce utile?

La solution

L'état des objets de valeur identifie-t-il cette instance particulière? Sinon, vous pouvez simplement renvoyer l'ancienne valeur et la nouvelle valeur lorsque le formulaire de modification est soumis, puis mettez à jour tous les objets ayant l'ancien état.

Je préférerais une page telle que Contact / C0001 / ThelephoneNumber et utiliser à la fois l'id du contact et la classe d'objets de valeur pour identifier l'instance que vous souhaitez modifier.

Sauf si j'ai complètement mal compris ce que vous demandez.

Autres conseils

Je voudrais que le numéro de téléphone contienne juste un tas de chiffres (peut-être au pluriel) et que je le renvoie comme suit: Contact / C0001 / Numéro de téléphone (s)

En pratique, je trouve toujours plus facile de donner une identité au numéro de téléphone, même si cela n’est pas strictement nécessaire en termes de conception.

S'il s'agit d'un objet de valeur strict qui ne peut exister en dehors du contexte du contact, cela signifie qu'une bonne interface utilisateur peut appeler le numéro de téléphone à modifier dans la page de contact plutôt que sur sa propre page.

Cependant, je pense que la solution de Marc Gear est une bonne solution si vous vous décidez contre l'une de ces deux approches.

En dépit de ce que beaucoup de gens aimeraient vous faire croire, vous ne pouvez pas être pur à 100%.

Vos objets de valeur nécessitent une sorte de champ Identité. Parfois, ce sera un objet unique pour un objet tel qu'un numéro de téléphone, parfois, il faudra que ce soit quelque chose d'artificiel, comme TelephoneNumber.Id.

Plus vite vous l'accepterez, mieux ce sera pour vous: -)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top