Qu'est-ce que l'inversion de contrôle ?

L'inversion de contrôle (ou IoC) peut être assez déroutante lorsqu'elle est rencontrée pour la première fois.

  1. Qu'est-ce que c'est ?
  2. Quels problèmes résout-il ?
  3. Quand est-ce approprié et quand ne l'est-il pas ?
请先 登录 后评论

4 réponses

Michal Sznajder

Mais je pense qu'il faut être très prudent avec ça. Si vous abusez de ce modèle, vous ferez une conception très compliquée et un code encore plus compliqué.

Comme dans cet exemple avec TextEditor : si vous n'avez qu'un seul correcteur orthographique, il n'est peut-être pas vraiment nécessaire d'utiliser IoC ? Sauf si vous avez besoin d'écrire des tests unitaires ou autre...

Quoi qu'il en soit : soyez raisonnable. Les modèles de conception sont de bonnes pratiques mais pas la Bible à prêcher. Ne le collez pas partout.

请先 登录 后评论
Glenn Block
  1. L'inversion de contrôle est un modèle utilisé pour découpler les composants et les couches du système. Le modèle est implémenté en injectant des dépendances dans un composant lors de sa construction. Ces dépendances sont généralement fournies en tant qu'interfaces pour un découplage supplémentaire et pour prendre en charge la testabilité. Les conteneurs IoC / DI tels que Castle Windsor, Unity sont des outils (bibliothèques) qui peuvent être utilisés pour fournir de l'IoC. Ces outils fournissent des fonctionnalités étendues au-delà de la simple gestion des dépendances, y compris la durée de vie, l'AOP/l'interception, la politique, etc.

  2. a. Évite à un composant d'être responsable de la gestion de ses dépendances.
    b. Offre la possibilité d'échanger des implémentations de dépendance dans différents environnements.
    c. Permet à un composant d'être testé en se moquant des dépendances.
    d. Fournit un mécanisme de partage de ressources dans une application.

  3. a. Critique lors du développement piloté par les tests. Sans IoC, il peut être difficile de tester, car les composants testés sont fortement couplés au reste du système.
    b. Critique lors du développement de systèmes modulaires. Un système modulaire est un système dont les composants peuvent être remplacés sans nécessiter de recompilation.
    c. Critique si de nombreuses préoccupations transversales doivent être traitées, en particulier dans une application d'entreprise.

请先 登录 后评论
ferventcoder

IoC/DI pour moi pousse les dépendances vers les objets appelants. Super simple.

La réponse non technique est de pouvoir échanger un moteur dans une voiture juste avant de l'allumer. Si tout fonctionne correctement (l'interface), tout va bien.

请先 登录 后评论
gogs

Par exemple, tâche

请先 登录 后评论