Injection de dépendances
-
Upload
mathurin-body -
Category
Documents
-
view
849 -
download
1
description
Transcript of Injection de dépendances
![Page 1: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/1.jpg)
TTFx Breizh User Group 1
Injection de dépendance
Mathurin BODY
![Page 2: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/2.jpg)
TTFx Breizh User Group 2
Les dépendances
• En programmation orienté objet, des dépendances existent entre les classes du modèle
MovieLister
Array moviesDirectedBy(String d)
FileMovieFinder
Array findAll()
![Page 3: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/3.jpg)
TTFx Breizh User Group 3
Dépendances codées « en dur »
SimpleCouplage fort avec une implémentation spécifique Pas de réutilisation possiblePas facile à tester
MovieLister
List moviesDirectedBy()
FileMovieFinder
List findAll()create
![Page 4: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/4.jpg)
TTFx Breizh User Group 4
Injection de dépendance
• Couplage lâche par interface
• Délègue à un composant tiers la résolution de la dépendance en passant la bonne implémentation
MovieLister
Array moviesDirectedBy()
MovieFinder<<interface>>
Array findAll()
FileMovieFinder
Array findAll()
Assembleur
create
create
• Inversion de contrôle• Principe Hollywood : Don’t call us, we’ll call you !
![Page 5: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/5.jpg)
TTFx Breizh User Group 5
3 types d’injection de dépendances
• Injection par setter
• Injection par interface (ou méthode)
• Injection par constructeur
![Page 6: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/6.jpg)
TTFx Breizh User Group 6
3 façons d’injecter une dépendance
• Par configuration xml (ou mxml)
• Programmatiquement
![Page 7: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/7.jpg)
TTFx Breizh User Group 7
3 façons d’injecter une dépendance
• Par annotation (type ou id)
![Page 8: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/8.jpg)
TTFx Breizh User Group 8
Les frameworks Flex de DI (ou IoC)
• SwizFramework
• Spring Actionscript (prana)
• Parsley / spicelib
• Mate
• SmartyPants (inspired by Guice)
• Robotlegs
• …
![Page 9: Injection de dépendances](https://reader034.fdocuments.fr/reader034/viewer/2022042606/546cf7aab4af9f612c8b51bd/html5/thumbnails/9.jpg)
TTFx Breizh User Group 9
Conclusion
Couplage faible (limité à l’interface)
Réutilisation de composants
Testabilité (injection de bouchons ou mocks)
Apprentissage du framework ou conteneur
Martin Fowler:http://martinfowler.com/articles/injection.html