.net - ecommerce - domain driven design example




Les interfaces doivent-elles vivre dans le même espace de noms que les classes concrètes qui les implémentent? (2)

Il n'y a certainement aucune raison impérieuse de le faire.

En effet, si les utilisateurs de l'interface n'ont pas besoin de connaître la classe concrète, et s'il y a plusieurs implémentations, et si le groupe définissant l'interface est différent du groupe implémentant une certaine version de celle-ci (tous valables ), il est probablement judicieux de séparer les espaces de noms de l'implémentation et de l'interface.

Je ne suis pas très sûr de C #, mais en Java, l'appartenance au package est un modèle d'organisation important pour renforcer la visibilité de la méthode. Si vous voulez utiliser des choses de type paquet-privé, vous devez regrouper les classes d'implémentation dans le même paquet (de sorte que vous ne pouvez probablement pas les assembler avec les interfaces).

Existe-t-il une norme pour l'organisation des solutions / projets en ce qui concerne les interfaces et les classes qui les implémentent? Je travaille sur une application MVP, DDD et j'adorerais recevoir des commentaires sur la façon dont les autres mettent en page leurs projets et pourquoi ils le font de cette façon. Merci!!


Ils devraient vivre dans l'espace de noms qui est logique pour eux; cela signifie qu'il n'y a pas de règle ferme pour savoir s'ils doivent ou non résider dans le même espace de noms. Vous remarquerez que les espaces de noms relativement abstraits ne coïncident souvent pas avec leur implémentation, alors que les interfaces qui ont plus de 1: 1 avec leurs implémenteurs sont plus susceptibles de rester côte à côte.

Une considération plus importante est de garder les interfaces consommables pour la réutilisation - normalement ceci signifie plus de considération donnée à ce qui va dans l'assemblée à côté des interfaces, plutôt que les espaces de noms.





project-structure