Dois-je créer une classe séparée pour chaque objet dans un agrégat ou les objets doivent-ils être des classes imbriquées d'une seule classe d'agrégat?Comment représenter les agrégats de domaine dans un modèle MVC?
Répondre
Cela dépend du degré de couplage de l'objet et des objets qu'il contient. Si vous avez une classe Personne et que cette personne a des numéros de téléphone allant de zéro à plusieurs, vous voudriez généralement que le numéro de téléphone soit une classe distincte, car plusieurs types d'objets différents pourraient avoir des numéros de téléphone (par exemple, commerces, écoles, etc.). Mais si l'objet est quelque chose qui est naturellement étroitement couplé, par exemple l'objet Personne pourrait avoir des orteils, alors une classe interne peut avoir un sens.
Certaines questions que vous pourriez vous poser sont: 1. L'objet agrégé nécessite-t-il un accès aux parties privées de la classe qui le contient? Si c'est le cas, une classe interne est un bon pari. 2. L'objet agrégé appartient-il toujours à exactement un objet, et l'objet auquel il appartient ne change jamais? Si non, alors vous ne voulez probablement pas de classe interne. 3. L'objet agrégé est-il significatif en dehors du contexte de l'objet d'agrégation? Si c'est le cas, cela ne devrait probablement pas être une classe interne. En cas de doute, il est généralement préférable d'utiliser une classe définie séparément, si ce n'est pour d'autres raisons que le couplage s'arrête et que les fichiers source sont plus petits.
Aussi pas que ce n'est pas nécessairement un ou l'autre. Vous pouvez toujours définir une classe ou une interface distincte, puis la sous-classe/l'implémenter dans la classe d'agrégation.
Si les objets agrégés sont séparables, c'est-à-dire qu'ils peuvent apparaître séparément et globalement, alors j'aurais une classe séparée par objet et j'utiliserais des collections typées pour représenter les agrégats.
Vous ne savez pas ce que MVC a à voir avec les agrégats de domaine car il est possible d'utiliser ce dernier sans interface utilisateur.
Je préfère généralement faire les parties d'un agrégat des classes distinctes parce que les parties peuvent avoir une signification commerciale de leur propre chef. Les classes imbriquées ont un sens lorsque la classe externe doit être chargée avant la classe interne ou lorsque vous ne pouvez pas rendre la classe interne publique (au moins, ces choses s'appliquent à Java).
- 1. Agrégats et référentiel. Comment déterminer les agrégats?
- 2. MVC Architecture - Comment représenter les listes
- 3. Comment gérez-vous les associations entre agrégats dans DDD?
- 4. nhibernate: comment mapper les agrégats
- 5. Comment représenter AppDomain dans ASP.NET?
- 6. Modèle MVC + modèle DDD
- 7. Évitez les références circulaires dans le modèle de domaine
- 8. Comment tester les classeurs de modèle personnalisés dans ASP.NET MVC?
- 9. MVC modèle/héritage modèle
- 10. Dois-je retirer les FK de mon modèle de domaine?
- 11. liaison de modèle dans mvc
- 12. Validation d'une partie du modèle dans MVC
- 13. Quelle est la meilleure façon de représenter plusieurs booléens dans un modèle django?
- 14. Faire face à un modèle de domaine anémique
- 15. Facebook Connect + MVC Modèle
- 16. Utilisation d'un modèle de vue + modèle de données dans ASP.NET MVC pour prendre en charge les vues typées?
- 17. Analyse de données PostgreSQL/agrégats
- 18. Chargement asynchrone d'un modèle de domaine
- 19. Dans Django, existe-t-il un moyen facile de représenter un champ de texte en tant que modèle dans un modèle?
- 20. requête Linq avec des agrégats
- 21. comment représenter un champ vide en yaml
- 22. Comment puis-je représenter un entier très grand dans .NET?
- 23. ASP.NET MVC (Modèle de domaine, dépôt, Fluent, Services - Structure pour mon projet)
- 24. Concevoir un modèle-contrôleur dans Cocoa?
- 25. Thunderdome MVC- Pourquoi un modèle unique en MVC?
- 26. Modèle liant dans MVC question
- 27. XSLT: Comment représenter OR dans un attribut "match"?
- 28. Combien devrait représenter un DataSet?
- 29. DDD. Modèle de domaine et consignation
- 30. Beaucoup de choix dans le domaine d'un modèle?