Maison Java javaDidacticiel Quelle est la différence entre l'inversion de contrôle et l'injection de dépendances ?

Quelle est la différence entre l'inversion de contrôle et l'injection de dépendances ?

Apr 24, 2019 pm 02:44 PM
依赖注入 Inversion de contrôle

Les différences entre l'inversion de contrôle et l'injection de dépendances sont : l'injection de dépendances est décrite du point de vue de l'application, tandis que l'inversion de contrôle est décrite du point de vue du conteneur ; l'inversion de contrôle se concentre sur les principes, tandis que la dépendance ; L'injection se concentre sur la mise en œuvre.

Quelle est la différence entre l'inversion de contrôle et l'injection de dépendances ?

[Cours recommandés : Tutoriel Java]

La différence entre l'inversion de contrôle et l'injection de dépendance

Inversion de contrôle IOC Inversion de contrôle

Injection de dépendance DI Injection de dépendance

Pour comprendre ces deux notions, il faut d'abord clarifier les questions suivantes :

Qui sont les participants ?

Dépendance : Qui dépend de qui ? Pourquoi avons-nous besoin de dépendances ?

Injection : Qui injecte à qui ? Qu'est-ce qui est injecté exactement ?

Inversion de contrôle : qui contrôle qui ? Contrôler quoi ? Pourquoi appelle-t-on cela un renversement (s’il y a un renversement, il devrait y avoir un renversement vers l’avant) ?

L'injection de dépendances et l'inversion de contrôle sont-elles le même concept ?

Répondons brièvement aux questions ci-dessus. Une fois ces questions comprises, IOC/DI sera également compris.

(1) Qui sont les participants :

Généralement, il y a trois parties, l'une est un certain objet ; l'une est le conteneur IOC/DI ; ressource externe pour un objet.

Un objet fait référence à n'importe quel objet Java ordinaire

Le conteneur IOC/DI fait simplement référence à un programme-cadre utilisé pour implémenter les fonctions IOC/DI

Les ressources externes de l'objet font référence à ce dont l'objet a besoin, mais elles sont obtenues de l'extérieur de l'objet. Elles sont collectivement appelées ressources, telles que : d'autres objets nécessaires à l'objet, ou des ressources de fichiers nécessaires à l'objet, etc.

(2) Qui dépend de qui :

Bien sûr, un certain objet dépend du conteneur IOC/DI

(3 ) Pourquoi les dépendances sont nécessaires :

Les objets ont besoin de conteneurs IOC/DI pour fournir les ressources externes nécessaires aux objets

(4) Qui injecte dans qui :

Évidemment le conteneur IOC/DI injecte un objet

(5) Qu'est-ce qui est injecté exactement :

C'est ça Injecter les ressources externes nécessaires à un objet

(6) Qui contrôle qui :

Bien sûr c'est le conteneur IOC/DI qui contrôle le objet

(7) Que contrôler :

Contrôle principalement la création d'instances d'objet

(8) Pourquoi ça s'appelle inverse Inverse :

L'inversion est relative à la direction positive, alors qu'est-ce qui compte comme positif ? Pensez à l'application dans des circonstances normales. Si vous souhaitez utiliser C dans A, que feriez-vous ? Bien entendu, l'objet de C est créé directement, c'est-à-dire que la ressource externe requise C est activement obtenue dans la classe A. Cette situation est appelée en avant. Alors, qu’est-ce que l’inverse ? Autrement dit, la classe A n'obtient plus activement C, mais attend passivement que le conteneur IOC/DI obtienne une instance de C, puis l'injecte dans la classe A à l'envers.

Utilisez une illustration pour illustrer. Tout d'abord, regardez le diagramme schématique de la classe A conventionnelle utilisant la classe C lorsqu'il n'y a pas d'IOC/DI, comme indiqué dans la figure :

Quelle est la différence entre l'inversion de contrôle et l'injection de dépendances ?

Avec le conteneur IOC/DI, la classe A ne crée plus activement du C, comme le montre la figure :

Quelle est la différence entre l'inversion de contrôle et l'injection de dépendances ?

mais attend passivement , attendez que le conteneur IOC/DI obtienne une instance de C, puis injectez-la à l'envers dans la classe A, comme indiqué sur la figure :

Quelle est la différence entre linversion de contrôle et linjection de dépendances ?

(9 ) L'injection de dépendances et l'inversion de contrôle sont-elles le même concept ?

D'après la description ci-dessus, vous devriez pouvoir voir que l'injection de dépendance et l'inversion de contrôle sont des descriptions différentes de la même chose. Sous un certain aspect, elles sont décrites sous des perspectives différentes. L'injection de dépendances est décrite du point de vue de l'application. La description complète est la suivante : l'application s'appuie sur le conteneur pour créer et injecter les ressources externes dont elle a besoin, tandis que l'inversion du contrôle est décrite du point de vue du conteneur ; le conteneur contrôle l'application. Le conteneur injecte à l'envers les ressources externes requises par l'application dans l'application.

Résumé :

En fait, le plus grand changement qu'IOC/DI apporte à la programmation ne vient pas du code, mais du point de vue de la pensée "maître-esclave". transposition" a eu des changements. L'application était à l'origine le patron et prenait l'initiative d'obtenir toutes les ressources. Cependant, dans la pensée IOC/DI, l'application devient passive, attendant passivement que le conteneur IOC/DI crée et injecte les ressources dont elle a besoin. Un si petit changement est en fait un grand progrès dans la pensée de la programmation, qui sépare efficacement l'objet et les ressources externes dont il a besoin, les rendant faiblement couplés, propices à la réutilisation fonctionnelle et, plus important encore, rendant l'ensemble du système du programme La structure devient très flexible

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Un guide étape par étape pour comprendre l'injection de dépendances dans Angular Un guide étape par étape pour comprendre l'injection de dépendances dans Angular Dec 02, 2022 pm 09:14 PM

Cet article vous guidera à travers l'injection de dépendances, présentera les problèmes que l'injection de dépendances résout et sa méthode d'écriture native, et parlera du framework d'injection de dépendances d'Angular. J'espère qu'il vous sera utile !

Comment utiliser l'injection de dépendances (Dependency Injection) dans le framework Phalcon Comment utiliser l'injection de dépendances (Dependency Injection) dans le framework Phalcon Jul 30, 2023 pm 09:03 PM

Introduction à la méthode d'utilisation de l'injection de dépendances (DependencyInjection) dans le framework Phalcon : Dans le développement logiciel moderne, l'injection de dépendances (DependencyInjection) est un modèle de conception courant visant à améliorer la maintenabilité et la testabilité du code. En tant que framework PHP rapide et peu coûteux, le framework Phalcon prend également en charge l'utilisation de l'injection de dépendances pour gérer et organiser les dépendances des applications. Cet article vous présentera comment utiliser le framework Phalcon

Modèle d'injection de dépendance dans le passage des paramètres de la fonction Golang Modèle d'injection de dépendance dans le passage des paramètres de la fonction Golang Apr 14, 2024 am 10:15 AM

Dans Go, le mode d'injection de dépendances (DI) est implémenté via le passage de paramètres de fonction, y compris le passage de valeurs et le passage de pointeurs. Dans le modèle DI, les dépendances sont généralement transmises sous forme de pointeurs pour améliorer le découplage, réduire les conflits de verrouillage et prendre en charge la testabilité. En utilisant des pointeurs, la fonction est découplée de l'implémentation concrète car elle ne dépend que du type d'interface. Le passage du pointeur réduit également la surcharge liée au passage d'objets volumineux, réduisant ainsi les conflits de verrouillage. De plus, le modèle DI facilite l'écriture de tests unitaires pour les fonctions utilisant le modèle DI, car les dépendances peuvent être facilement simulées.

Injection de dépendances à l'aide du framework de tests unitaires JUnit Injection de dépendances à l'aide du framework de tests unitaires JUnit Apr 19, 2024 am 08:42 AM

Pour tester l'injection de dépendances à l'aide de JUnit, le résumé est le suivant : Utiliser des objets fictifs pour créer des dépendances : l'annotation @Mock peut créer des objets fictifs de dépendances. Définir les données de test : la méthode @Before s'exécute avant chaque méthode de test et est utilisée pour définir les données de test. Configurer le comportement fictif : la méthode Mockito.when() configure le comportement attendu de l'objet fictif. Vérifier les résultats : assertEquals() affirme vérifier si les résultats réels correspondent aux valeurs attendues. Application pratique : vous pouvez utiliser un framework d'injection de dépendances (tel que Spring Framework) pour injecter des dépendances et vérifier l'exactitude de l'injection et le fonctionnement normal du code via les tests unitaires JUnit.

Compréhension approfondie de l'inversion de contrôle en langage Go Compréhension approfondie de l'inversion de contrôle en langage Go Apr 08, 2024 am 08:51 AM

L'inversion de contrôle (IoC) est un modèle de conception logicielle qui sépare les dépendances d'objet en couplages codés en dur. Dans Go, l'IoC peut être réalisé via des interfaces et l'injection de dépendances (DI) : Interface : définit l'ensemble des méthodes que les types suivant l'interface doivent implémenter. Injection de dépendances : la configuration externe ou la génération de code définit les dépendances des objets. Les conseils incluent : Injection de constructeur : spécification des dépendances dans le constructeur. Injection de champs : utilisez la réflexion ou la génération de code pour injecter des dépendances dans les champs. Injection d'interface : transmission de types d'interface en tant que paramètres à des fonctions ou des méthodes.

Injection de dépendances et conteneur de services pour les fonctions PHP Injection de dépendances et conteneur de services pour les fonctions PHP Apr 27, 2024 pm 01:39 PM

Réponse : L'injection de dépendances et les conteneurs de services dans PHP aident à gérer les dépendances de manière flexible et à améliorer la testabilité du code. Injection de dépendances : faites passer les dépendances via le conteneur pour éviter la création directe au sein de la fonction, améliorant ainsi la flexibilité. Conteneur de services : stocke les instances de dépendance pour un accès facile dans le programme, améliorant encore le couplage lâche. Cas pratique : l'exemple d'application démontre l'application pratique de l'injection de dépendances et des conteneurs de services, injectant des dépendances dans le contrôleur, reflétant les avantages du couplage lâche.

Comment utiliser l'injection de dépendances pour les tests unitaires dans Golang ? Comment utiliser l'injection de dépendances pour les tests unitaires dans Golang ? Jun 02, 2024 pm 08:41 PM

L'utilisation de l'injection de dépendances (DI) dans les tests unitaires Golang peut isoler le code à tester, simplifiant ainsi la configuration et la maintenance des tests. Les bibliothèques DI populaires incluent wire et go-inject, qui peuvent générer des stubs de dépendance ou des simulations pour les tests. Les étapes des tests DI comprennent la définition des dépendances, la configuration des cas de test et l'affirmation des résultats. Un exemple d'utilisation de DI pour tester une fonction de gestion des requêtes HTTP montre à quel point il est facile d'isoler et de tester du code sans dépendances ni communication réelles.

Go Language : Guide d'injection de dépendances Go Language : Guide d'injection de dépendances Apr 07, 2024 pm 12:33 PM

Réponse : En langage Go, l’injection de dépendances peut être implémentée via des interfaces et des structures. Définissez une interface qui décrit le comportement des dépendances. Créez une structure qui implémente cette interface. Injectez des dépendances via des interfaces en tant que paramètres dans les fonctions. Permet un remplacement facile des dépendances lors des tests ou dans différents scénarios.

See all articles