2012-11-16 3 views
0

Je viens de lire un chapitre sur les agrégats et j'ai découvert que je ne comprenais pas quelque chose. Nous avons trois objets: Membre, Objet, Enchère. Voici l'extrait de code du livre:Agrégats de modèle de domaine

public class Member 
{ 
    public string Id {get; set;} 
    ... 
} 

public class Item 
{ 
    public string Id {get; set;} 
    public IList<Bid> Bids {get; set;} 
    ... 
} 

public class Bid 
{ 
    public Member Member {get; set;} 
    ... 
} 

Autor a écrit que l'article et de ses offres est un agrégat comme une offre n'a pas de sens sans objet. Ainsi, l'élément et le membre sont des racines agrégées. Cependant, je pense que Bid n'a pas de sens sans le membre aussi. Et il semble que c'est logique. Alors, qu'est-ce qu'une offre dans cette situation? Est-ce une partie de l'agrégat d'objet?

Répondre

2

d'abord, globale et racine globale sont concepts différents. Dans ce cas, l'élément et l'enchère peuvent faire partie du même agrégat mais un seul, je pense que l'élément est la racine agrégée (AR).

Définition quelle classe est l'AR dépend extrémement du contexte borné (BC). En outre, cette classe membre peut être représentée uniquement comme un simple identifiant dans ce BC, ce n'est pas le membre que vous pourriez utiliser dans un autre BC (vous voyez que DDD est TRÈS difficile).

L'article implique à la fois l'offre et membre, tous ensemble, forment un ensemble, mais l'élément est la racine globale i.e. l'objet de façade utilisé par d'autres pour gérer l'ensemble.

+0

Alors, comment voulez-vous récupérer les offres d'un membre? Je suppose que la classe Membre devra référencer les éléments sur lesquels ce membre a soumis une offre. Ensuite, sur la racine de l'agrégat Item, il pourrait y avoir une fonction pour récupérer les enchères d'un membre pour cet item. –

+0

J'ai écrit que l'article et le membre sont AR. Hmm, je ne suis pas d'accord que les agrégats peuvent très différents BC dans un modèle de domaine. – Danil

+0

@ Meta-Knight Modélisation du domaine n'a rien à voir avec le stockage de base de données et cet exemple est très simpliste, donc il ressemble à la façon dont les entités ORM pourraient être modélisés, mais c'est tout. Je considère toujours le domaine et la persistance comme différents, donc je ne me soucie pas du stockage quand j'ai affaire au domaine. – MikeSW

1

Bien que pas exactement la même chose, ce qui est très similaire à this SO question, où la réponse de Richard Cirerol est un décent.

Mais, je vous dirigerais vers the book on page 71, où le diagramme montre que bid a une référence à un membre et peut donc atteindre OUT pour obtenir cette information, mais le membre ne peut pas atteindre IN. La seule façon d'atteindre est via l'article. Ainsi, l'élément est le point de contrôle dans l'exemple. Cela aide à garder les lignes de ce qui peut faire ce qui est clair et transactionnel.

Questions connexes