2010-06-19 10 views
2

Je veux utiliser l'injection de dépendance (Unity) et pour le moment je pense à la façon de configurer mon projet (c'est une démo de fantaisie sur laquelle je travaille). Donc, pour découpler complètement tous les composants et ne plus avoir de dépendances d'assemblage, est-il conseillé de créer un assembly ".Contracts" ou quelque chose de similaire et d'y mettre toutes les interfaces et structures de données partagées?Injection de dépendances - meilleure pratique pour les composants entièrement découplés?

Considérez-vous cela comme la meilleure pratique ou suis-je sur une mauvaise piste ici?

Ce que je veux accomplir:

testabilité pleine, je veux que tous les composants découple fortement que possible et injecter tout, aucun composant ne sera jamais parler directement à une mise en œuvre concrète plus.

Répondre

3

La première étape, et probablement la plus importante, consiste à programmer des interfaces plutôt que des implémentations concrètes. Ce faisant, l'application sera faiblement couplée, que DI soit utilisé ou non.

+0

oui, mais placeriez-vous toutes les interfaces dans un même assemblage/bibliothèque/projet? – StormianRootSolver

+0

Cela dépend. Si les composants sont définitivement utilisés dans d'autres projets, oui. Sinon, dans le même projet, une structure raisonnable est encore bonne. – Finglas

+0

Merci. J'ai pris ma décision maintenant. Je vais suivre votre suggestion et créer un projet. Contrats où je mets toutes les interfaces qui sont utilisées par plusieurs assemblages. :-) – StormianRootSolver

1

Je ne voudrais pas séparer les interfaces d'autres assemblages. Si vous devez interagir avec quelque chose qui fait partie de votre domaine, pourquoi le séparer? Des exemples d'interfaces sont des référentiels, un expéditeur d'e-mail, etc. Vous disposez d'un assemblage Modèle dans lequel vous avez vos objets de domaine. Cet ensemble expose les interfaces, et les implémentations, évidemment, référencent Model afin de les implémenter.

+0

+1 pour votre réponse! :-) Mais comment iriez-vous sur les classes en fonction du nombre total d'étrangers pour travailler? Je veux dire, imaginez que vous avez un composant de service qui dépend de la même classe d'accesseur de fichier de configuration que, disons, un système d'impression? N'introduirait-on pas trop de références dans ce cas? – StormianRootSolver

Questions connexes