J'ai trouvé ce drôle d'Exemple, en termes de perte de couplage:
Toute application est composée de nombreux objets qui collaborent les uns avec les autres pour effectuer quelques trucs utiles. Traditionnellement, chaque objet est responsable de l'obtention de ses propres références pour les objets dépendants (dépendances) il collaborer avec. Cela conduit à fortement couplé classes et dur-à-code d'essai.
Par exemple,considérons un Car
objet.
Un Car
dépend de Roues, Moteur, Carburant, Batterie, etc à exécuter. Traditionnellement, nous avons définir la marque de ces objets qui en dépendent ainsi que la définition de l' Car
objet.
Sans Injection de Dépendance (DI) :
class Car{
private Wheel wh= new NepaliRubberWheel();
private Battery bt= new ExcideBattery();
//rest
}
Ici, l' Car
objet est chargé de créer les objets qui en dépendent.
Que faire si nous voulons changer le type de son objet dépendant - dire Wheel
- après la première NepaliRubberWheel()
crevaisons?
Nous avons besoin de recréer l'objet Voiture avec sa nouvelle dépendance dire ChineseRubberWheel()
, mais seulement l' Car
fabricant peut le faire.
Alors que l' Dependency Injection
nous fait pour ...?
Lors de l'utilisation de l'Injection de Dépendance, les objets sont donné leurs dépendances au moment de l'exécution plutôt que de moment de la compilation (voiture le temps de fabrication).
De sorte que nous pouvons maintenant modifier le Wheel
chaque fois que nous voulons. Ici, l' Dependency
(Wheel
) peut être injecté en Car
au moment de l'exécution.
Après l'utilisation de DI:
class Car{
private Wheel wh= [Inject an Instance of Wheel at runtime]
private Battery bt= [Inject an Instance of Battery at runtime]
}
Source: compréhension-injection de dépendance