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 (avec
providers
etinjectors
)
🎯 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 ? 😊
Top comments (0)