2009-09-02 4 views

Répondre

15

Si votre domaine est géographique ou politique, alors il peut s'agir d'une entité, mais dans le cas moyen, un pays n'est qu'une valeur associée à des choses comme des adresses. Dans ce cas, dans le contexte de votre modèle d'objet, c'est juste une valeur. En ce qui concerne le stockage, le modèle de domaine ne s'en soucie pas vraiment. Vous pouvez utiliser la base de données si c'est pratique, XML si vous préférez, et une classe si vous avez un comportement associé aux pays.

+0

Eh bien, je suis super en retard mais comment proposez-vous un objet de valeur à stocker? Je suppose qu'un référentiel est hors de question, statique dans les valeurs de mémoire peut-être? –

+0

Un objet valeur ne va pas être une racine agrégée, il n'aura donc pas besoin de son propre référentiel.Si vous utilisez un ORM, un objet valeur peut être mappé aux champs composés dans une table sous une racine d'agrégat parent ou même, dans certaines circonstances, des tables distinctes sous lesquelles la seule identité significative est celle de l'objet propriétaire. – JasonTrue

10

L'une des caractéristiques d'une entité est qu'elle a un cycle de vie, c'est-à-dire qu'elle change avec le temps. Un objet de valeur ne l'est pas. En fait, les objets de valeur devraient être immuables. La question à se poser est donc la suivante: «Le pays s'oppose-t-il au changement dans le temps?

Un autre aspect qui différencie les entités et les objets de valeur est que deux objets de valeur ayant les mêmes propriétés sont les mêmes. Donc, si vous avez une instance de pays avec le nom "France", c'est même comme une autre instance de pays avec le nom "France", même si elles sont deux instances distinctes (en supposant que c'est la seule propriété du pays pour l'amour de cette discussion). Pensez aux chaînes dans la plupart des langues, la chaîne "fubar" équivaut à une autre instance de la chaîne "fubar".

Les entités, en revanche, sont distinctes même si elles ont les mêmes propriétés. Un client avec le nom "John Smith" peut ne pas être le même qu'un autre client avec le nom "John Smith".

Donc, compte tenu de ces caractéristiques, vous devriez être en mesure de décider. Comme il ne peut y avoir qu'une seule «France» et qu'elle ne change pas au fil du temps, c'est probablement un objet de valeur - à moins que votre application n'ait besoin de suivre un pays qui pourrait changer au fil du temps.

+7

France est déjà à la version 5.0: http://en.wikipedia.org/wiki/French_Fifth_Republic;) – MSalters

3

Imagine:

Vous avez une autre entité - Client.
Références d'entité client Objet de pays.
Vous avez 2 instances d'entités avec pays rempli des objets avec la même valeur (par exemple « France »)
Vous supprimez l'objet pays de la première entité (ou premier objet entité)

  • si vous voulez pays à supprimer pour 2ème objet entité trop
    => pays est un objet entité
  • si vous Vant pays à supprimer uniquement pour le 1er objet entité
    => pays est un objet de valeur
Questions connexes