# Qu'est-ce que la "Dependency Injection" ?

La "Dependency Injection" **est un "design pattern"** qui consiste à **séparer l'instanciation** *(et donc l'implémentation)* d'une dépendance **et son utilisation**.

## Pourquoi ?

Ce "design pattern" permet :

* d'**inverser les dépendances**,
* d'**éviter le couplage fort** avec les dépendances,
* de **factoriser l'instanciation** d'une dépendance,
* de **faciliter le remplacement** d'une dépendance par une autre implémentation **à des fins fonctionnelles ou de "testing“**.

## Comment ?

### Sans "Dependency Injection"

![Without Dependency Injection](https://4009647861-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9vDDYxu6nH7FVBtFFS%2F-LCEmn0WCy26l6vL60Su%2F-LCExm1N-SKFyQdW7pKV%2Fwithout-dependency-injection.jpg?alt=media\&token=c33cbac8-5736-44f9-8af4-e856a6a49cfd)

### Dependency Inversion

![Dependency Inversion](https://4009647861-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9vDDYxu6nH7FVBtFFS%2F-LCEmn0WCy26l6vL60Su%2F-LCExpXFgv_jAODr1i01%2Fdependency-inversion.jpg?alt=media\&token=2be8343a-b5b4-4734-9ab8-46952f2bb0a8)

### Dependency Injection

![Dependency Injection](https://4009647861-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-L9vDDYxu6nH7FVBtFFS%2F-LCEmn0WCy26l6vL60Su%2F-LCExtIt1Ns6QTbh65PI%2Fdependency-injection.jpg?alt=media\&token=2fa29c19-ad8d-41ff-b7cd-41e93dcf8a49)
