2. Les dépendances
• En programmation orienté objet, des dépendances
existent entre les classes du modèle
MovieLister FileMovieFinder
Array moviesDirectedBy(String d) Array findAll()
TTFx Breizh User Group 2
3. Dépendances codées « en dur »
MovieLister FileMovieFinder
create
List moviesDirectedBy() List findAll()
Simple
Couplage fort avec une implémentation spécifique
Pas de réutilisation possible
Pas facile à tester
TTFx Breizh User Group 3
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
Assembleur MovieLister MovieFinder
create <<interface>>
Array moviesDirectedBy() Array findAll()
FileMovieFinder
create
Array findAll()
• Inversion de contrôle
• Principe Hollywood : Don’t call us, we’ll call you !
TTFx Breizh User Group 4
5. 3 types d’injection de dépendances
• Injection par constructeur
• Injection par setter
• Injection par interface (ou méthode)
TTFx Breizh User Group 5
6. 3 façons d’injecter une dépendance
• Programmatiquement
• Par configuration xml (ou mxml)
TTFx Breizh User Group 6
7. 3 façons d’injecter une dépendance
• Par annotation (type ou id)
TTFx Breizh User Group 7
8. Les frameworks Flex de DI (ou IoC)
• SwizFramework
• Spring Actionscript (prana)
• Parsley / spicelib
• Mate
• SmartyPants (inspired by Guice)
• Robotlegs
• …
TTFx Breizh User Group 8
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
TTFx Breizh User Group 9