Question

Je ne suis pas sûr pour laquelle les cas d'utilisation on doit utiliser DI dans l'application. Je sais que des services tels que l'injection PlaceService ou CalculationService etc va très bien, mais je dois aussi créer mes objets de domaine avec DI comme un User? Qu'est-ce que si le User n'a qu'un seul constructeur qui nécessite une première et lastname. Est-ce solveable avec DI?

Dois-je utiliser DI pour créer les instances pour les interfaces Set / Liste ou est-ce matraquage pur?

Je l'utilise principalement Guice.

Était-ce utile?

La solution

L'utilisation de la règle I est, en général, pour favoriser l'injection de dépendance, sauf si l'objet peut être construit avec des valeurs purement primitives et il n'y a pas / une chance minimale que l'objet pourrait être remplacée par une autre mise en œuvre.

Cependant, pour les objets de domaine, en particulier si vos objets ne constitue pas une anémique modèle de domaine , à savoir, où les objets ne sont que des sacs de accesseurs, il peut être utile d'avoir des objets qui, par exemple, peuvent se persisteront à un datastore, etc. pour ces sortes d'objets, l'injection de dépendance et Salve peut être une puissante combinaison.

Guice a une solution spécifique au type de problème posé par des objets comme votre objet utilisateur appelé AssistedInject , bien que des choses semblables sont également possibles avec d'autres conteneurs légers ou en utilisant quelque chose les modèles de constructeur ou adaptateur.

Autres conseils

La réponse par ig0774 est un bon point de départ. De plus, je voudrais offrir cette règle:

Dans la terminologie de Domain-Driven Design , vous devriez DI pour services , mais pas pour entités ou valeur des objets .

En d'autres termes, DI correspond bien à conceptuellement longue durée, les objets sans état dont il existe généralement un ou plusieurs connu en cours d'utilisation.

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