Question

J'ai récemment examiné le modèle de référentiel comme moyen de masquer tous les détails de la persistance sous le tapis en ce qui concerne le code client. En lisant tout cela, il semble qu’un référentiel est / peut être [généralement?] Responsable des agrégats plutôt que de simples classes simples.

Cela me semble logique car vous pourriez avoir une classe définissant les messages et une autre Commentaires . Cela fait un candidat idéal pour un agrégat puisque les deux sont très étroitement liés. Cependant, comment pourrais-je représenter une classe d'utilisateurs et sa relation avec ses messages ?

Serait-il judicieux de regrouper les utilisateurs avec le messages / commentaires ou de conserver les utilisateurs seuls et simplement d'associer une association via une bonne référence ancienne?

J'ai moi-même essayé de trouver la réponse à l'aide de Google, mais bon nombre des exemples que je trouve ne sont que des exemples isolés. Par exemple, Posts / Comment ou peut-être Commander et OrderLine , etc. Je ne trouve rien qui montre comment les autres classes associées vont bien ensemble.

Je n’applique pas cela à quelque chose de spécifique, bien que PHP ou Java / C # soit probablement le domaine dans lequel je voudrais utiliser ces idées. Dans tous les cas, je cherche simplement à comprendre certaines de ces idées et concepts avant de me lancer et de créer un monstre. :)

Merci pour votre temps.

Était-ce utile?

La solution

Le modèle de référentiel est défini de manière assez vague et n’a pas nécessairement de relation avec le modèle d’agrégation. Cependant, si vous vous abonnez à la méthode DDD, les référentiels sont uniques aux agrégats.

Voyons cela du point de vue de DDD. DDD indique que les objets d'un agrégat peuvent avoir une référence à une autre racine d'agrégat, mais que les objets d'un agrégat sont uniquement accessibles via la racine. La règle de base pour déterminer les agrégats est ce qui doit être supprimé lors de la suppression de la racine. Cependant, DDD décourage davantage l’utilisation de relations que la plupart des méthodologies, affirmant que, du fait qu’une relation existe dans un domaine, elle n’existe pas nécessairement dans votre modèle de domaine. Gardez donc cela à l’esprit.

Dans votre cas, lorsque vous supprimez un message, je suppose que vous supprimerez également les commentaires, mais pas l'utilisateur qui a créé le message ni ceux qui l'ont commenté. Par conséquent, vous définissez correctement l’agrégat publications / commentaires, mais il n’a aucun sens de regrouper les utilisateurs dans cet agrégat.

Les utilisateurs, étant son propre agrégat, peuvent contenir une relation avec toutes leurs publications, car Post est la racine de l'agrégat. Vous pouvez également implémenter cette méthode sur le PostRepository afin d’obtenir toutes les publications d’un utilisateur donné. J'espère que ça aide!

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