Question

Quelles sont les fonctionnalités les plus importantes qu'un conteneur IOC doit contenir? Vous pouvez facilement créer des conteneurs dans 15 lignes de code , mais que faut-il inclure pour être "utile" " dans un projet?

Était-ce utile?

La solution

Il s’agit d’un sujet assez large et ouvert à beaucoup de subjectivité, mais je vais essayer de répondre d’un point de vue très pragmatique. Compte tenu des projets sur lesquels j’ai travaillé et de mon expérience avec IoC, je dirais qu’il ya au moins trois objectifs à rechercher en termes d’utilité.

  1. Configuration : toute IoC que vous utilisez doit avoir un emplacement central permettant de configurer le comportement de ce conteneur. Qu'il s'agisse d'un fichier de configuration ou d'un bel ensemble d'appels d'API pouvant être regroupés dans une classe globale, quelque part, si le conteneur n'est pas facilement configurable, cela risque de vous poser problème.
  2. Gestion à vie : vous souhaitez vraiment un conteneur capable de prendre en charge différentes durées de vie des objets. Vous voudrez peut-être qu'un certain objet obtienne toujours un nouvel IPersonCreator, mais vous ne voulez qu’un seul IPersonService à la fois.
  3. Injection automatique de dépendances : l'injection de dépendances est le concept sur lequel IoC est construit au-dessus, mais vous ne voulez pas avoir à gérer cela vous-même. L’idée ici est que si vous demandez un IPersonCreator pour la première fois, il devrait résoudre automatiquement toutes ses dépendances, ainsi que leurs dépendances, etc.

Globalement, ce dont vous avez besoin dépend du projet, mais plusieurs conteneurs conviennent parfaitement à vos besoins.

Autres conseils

Par ordre décroissant d'importance:

  1. Autoriser au moins l'injection de setter et de constructeur,
  2. Séparer la configuration du code,
  3. Autoriser différents styles de configuration (XML ou annotations),

Cela nécessitera plus de 15 lignes de code, mais celles-ci me semblent essentielles.

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