Injection de dépendance

Injection de dépendance

Inversion de contrôle

L'inversion de contrôle (Inversion of Control, IoC) est un patron d'architecture commun à tous les frameworks (ou cadre de développement et d'exécution). Il fonctionne selon le principe que le flot d'exécution d'un logiciel n'est plus sous le contrôle direct de l'application elle-même mais du framework ou de la couche logicielle sous-jacente.

L'inversion de contrôle est un terme générique. Selon la problématique, il existe différentes formes, ou représentation d'IoC. Le plus connu étant l'inversion des dépendances (dependency inversion principle) qui est un patron de conception permettant, en programmation orientée objet, de découpler les dépendances entre objets.

Sommaire

Principe de l'inversion de contrôle

Avec l'IoC, le framework (cadriciel) prend en charge l'exécution principale du programme ; il coordonne et contrôle l'activité de l'application. Le programme utilisateur définit alors les blocs de codes en utilisant l'API fournie à cet effet par le framework, sans relation dure entre eux. Ces blocs de codes sont laissés à la discrétion du framework qui se chargera de les appeler.

L'IoC est illustré par le principe d'Hollywood : "Ne nous appelez pas, c'est nous qui vous appellerons". Selon ce principe, l'inversion de contrôle a lieu entre le framework (ou la couche logicielle sous-jacente) et l'application. Ce n'est plus l'application qui gère les appels au framework, mais ce dernier à l'application.

Exemple

Soit une application qui demande des informations sur l'utilisateur. Selon l'approche classique, le corps du programme pose non seulement les briques d'interaction Homme-Machine (IHM) mais contrôle aussi la séquence d'exécution de celles-ci.

Exemple en pseudo-langage :

print  'Votre nom :'
read   nom
traite nom
print  'Votre âge :'
read   age
traite age
…

Avec l'IoC, le framework s'assure du contrôle du flot d'exécution souvent sous la forme d'une fonction principale. Le corps principal du programme prend alors en charge seulement le traitement et, dans une moindre mesure, les briques IHM.

Exemple en pseudo-langage :

framework          ← init
q1                 ← question 'Votre nom :'
attache_traitement q1, mon_code
q2                 ← question 'Votre âge :'
attache_traitement q2, mon_autre_code
boucle_principale  framework

Ici le framework est d'abord initialisé. Ensuite les composants qui font l'IHM du programme sont créés. À ces composants est attaché un traitement à exécuter par le framework lorsque ceux-ci sont devenus actifs par action de l'utilisateur. Puis, pour finir, le contrôle de l'application est passé au framework.

Principe de l'injection de dépendance

Le principe est de découpler les liens de dépendances entre objets. En programmation objet, les objets de type A dépendent d'un objet de type B si au moins une des conditions suivantes est vérifiée :

  • A possède un attribut de type B (dépendance par composition) ;
  • A est de type B (dépendance par héritage) ;
  • A dépend d'un autre objet de type C qui dépend d'un objet de type B (dépendance par transitivité) ;
  • une méthode de A appelle une méthode de B.

Si A dépend de B, cela implique que pour créer A, on ait besoin de B ce qui, en pratique, n'est pas toujours le cas.

Pour supprimer la dépendance, un moyen possible consiste à

  • créer une interface I qui contiendra toutes les méthodes que A peut appeler sur B,
  • indiquer que B implémente l'interface I,
  • remplacer toutes les références au type B par des références à l'interface I dans A.

Un problème qui se pose est de disposer dans A d'un objet implémentant I alors que l'on ne sait pas comment l'instancier. La solution consiste à créer, par exemple, un objet b de type B et de l'injecter dans un objet de type A. L'injection proprement dite peut se faire

  • à l'instanciation : on passe l'objet b à l'instanciation de A
  • par modificateur : on passe l'objet b à une méthode de A qui va par exemple modifier un attribut (setter)

Utilisation

Ces techniques sont très utilisées pour les applications bâties sur des serveurs d'applications.

On les rencontre aussi dans le framework .NET.

  • Le design pattern provider du Framework .NET.

Aller plus loin

Un article expliquant et mettant en pratique l'injection de dépendances (fr)

Voir aussi

Ce document provient de « Inversion de contr%C3%B4le#Principe de l.27injection de d.C3.A9pendance ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Injection de dépendance de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Dépendance/Addiction — Addiction Addiction CIM 10 : F1x.2 (Dépendance à la drogue) L addiction ou la dépendance est, au sens phénoménologique, une conduite qui repose sur une envie répétée et irrépressible, en dépit de la motivation et des efforts du sujet pour s y… …   Wikipédia en Français

  • Dépendance (toxicologie) — Addiction Addiction CIM 10 : F1x.2 (Dépendance à la drogue) L addiction ou la dépendance est, au sens phénoménologique, une conduite qui repose sur une envie répétée et irrépressible, en dépit de la motivation et des efforts du sujet pour s y… …   Wikipédia en Français

  • Dépendance affective — Addiction Addiction CIM 10 : F1x.2 (Dépendance à la drogue) L addiction ou la dépendance est, au sens phénoménologique, une conduite qui repose sur une envie répétée et irrépressible, en dépit de la motivation et des efforts du sujet pour s y… …   Wikipédia en Français

  • Dépendance au jeu vidéo — La dépendance au jeu vidéo désigne un trouble psychologique caractérisant un besoin irrésistible et obsessionnel de jouer à un jeu vidéo. L addiction aux jeux vidéo entraînerait chez le joueur des comportements au caractère répétitif et compulsif …   Wikipédia en Français

  • Dépendance à la pornographie — Pour les articles homonymes, voir Dépendance. La dépendance à la pornographie est un trouble à caractère psychologique entraînant un besoin plus ou moins important d assister à des scènes pornographiques (ou de réaliser l acte sexuel) afin de… …   Wikipédia en Français

  • Dépendance à Internet — Pour les articles homonymes, voir Dépendance. Finale des World Cyber Games de 2005 (un tournoi mondial de jeux en ligne). Illustration de la cyberaddiction …   Wikipédia en Français

  • Dépendance au sucre — La dépendance au sucre est la difficulté pour une personne de contrôler son apport en aliments ou boissons sucrés. Bien que ce terme ne soit pas souvent utilisé dans des écrits scientifiques, de plus en plus d’études suggèrent que sous certaines… …   Wikipédia en Français

  • Site d'injection supervisée — Un site d injection supervisée (ou salle d injection ou local d injection ou salle de consommation de drogues à moindre risque) est un lieu où les toxicomanes s injectant par voies intraveineuses peuvent venir pratiquer leur injection dans de… …   Wikipédia en Français

  • Addiction ou dépendance sexuelle — L addiction sexuelle, ou dépendance sexuelle, se caractérise par la perte de contrôle de la sexualité et la poursuite du comportement pathologique lié à l acte sexuel malgré la connaissance de ses conséquences négatives. La dépendance sexuelle n… …   Wikipédia en Français

  • Inversion de contrôle — L’inversion de contrôle (Inversion of Control, IoC) est un patron d architecture commun à tous les frameworks (ou cadre de développement et d exécution). Il fonctionne selon le principe que le flot d exécution d un logiciel n est plus sous le… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”