1. Inversion de Contrôle (IoC)
L'Inversion de Contrôle est un principe architectural qui délègue la gestion des dépendances à un conteneur ou un framework, plutôt que de les gérer directement dans le code.
Exemple sans IoC (Couplage fort) :
class Service {
private Repository repo;
public Service() {
this.repo = new Repository(); // Couplage fort
}
}
Avec IoC, la gestion des dépendances est externalisée.
2. Injection de Dépendances (DI)
L’Injection de Dépendances est une implémentation d’IoC où les dépendances sont injectées plutôt que créées à l'intérieur d'une classe.
Types d'Injection de Dépendances
1. Injection par constructeur
class Service {
private Repository repo;
public Service(Repository repo) { // Injection via constructeur
this.repo = repo;
}
}
2. Injection par setter
class Service {
private Repository repo;
public void setRepository(Repository repo) { // Injection via setter
this.repo = repo;
}
}
3. Injection via un framework (ex: Spring en Java)
Avec Spring, on peut utiliser l'annotation @Autowired :
@Service
class Service {
@Autowired
private Repository repo; // Injection automatique
}
3. Avantages de DI et IoC
✅ Réduction du couplage : Favorise un code plus flexible et modulaire.
✅ Facilité de test : Permet d’injecter des mocks pour les tests unitaires.
✅ Meilleure maintenabilité : Les dépendances sont déclarées et gérées à un seul endroit.
Exemples de Frameworks utilisant DI/IoC
Java : Spring, CDI
.NET : ASP.NET Core DI
JavaScript : Angular (avecprovidersetinjectors)
🎯 En résumé
IoC est un principe général qui délègue la gestion du flux d’exécution.
DI est une façon d’implémenter IoC en injectant les dépendances au lieu de les créer manuellement.- Utiliser un framework comme Spring ou ASP.NET Core permet d'automatiser cette gestion.
Besoin d'un exemple concret avec un framework spécifique ? 😊