SlideShare une entreprise Scribd logo
1  sur  9
Télécharger pour lire hors ligne
Injection
de dépendance




                             Mathurin BODY


         TTFx Breizh User Group              1
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
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
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
3 types d’injection de dépendances

• Injection par constructeur



• Injection par setter


• Injection par interface (ou méthode)


                     TTFx Breizh User Group   5
3 façons d’injecter une dépendance
• Programmatiquement



• Par configuration xml (ou mxml)




                  TTFx Breizh User Group   6
3 façons d’injecter une dépendance
• Par annotation (type ou id)




                   TTFx Breizh User Group   7
Les frameworks Flex de DI (ou IoC)
•   SwizFramework
•   Spring Actionscript (prana)
•   Parsley / spicelib
•   Mate
•   SmartyPants (inspired by Guice)
•   Robotlegs
•   …

                    TTFx Breizh User Group   8
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

Contenu connexe

En vedette

Creating videos in the classroom
Creating videos in the classroomCreating videos in the classroom
Creating videos in the classroom
Lisa Campbell
 
반복적인 unit
반복적인 unit반복적인 unit
반복적인 unit
Min Sun Kim
 

En vedette (13)

Maquillaje
MaquillajeMaquillaje
Maquillaje
 
Auto Ad Inc Media Kit
Auto Ad Inc Media KitAuto Ad Inc Media Kit
Auto Ad Inc Media Kit
 
Modelos jaulas cerdas
Modelos jaulas cerdasModelos jaulas cerdas
Modelos jaulas cerdas
 
Creating videos in the classroom
Creating videos in the classroomCreating videos in the classroom
Creating videos in the classroom
 
Assignment of ethnograph
Assignment of  ethnographAssignment of  ethnograph
Assignment of ethnograph
 
Why i love my grandma
Why i love my grandmaWhy i love my grandma
Why i love my grandma
 
반복적인 unit
반복적인 unit반복적인 unit
반복적인 unit
 
Adamson Jones IP Manager
Adamson Jones IP ManagerAdamson Jones IP Manager
Adamson Jones IP Manager
 
9 Tips: Make Your Linkedin Profile Work Harder
9 Tips: Make Your Linkedin Profile Work Harder9 Tips: Make Your Linkedin Profile Work Harder
9 Tips: Make Your Linkedin Profile Work Harder
 
Stop telling stories 3
Stop telling stories 3Stop telling stories 3
Stop telling stories 3
 
Why i love my grandma
Why i love my grandmaWhy i love my grandma
Why i love my grandma
 
Daisies
DaisiesDaisies
Daisies
 
Sample of photographic work
Sample of photographic workSample of photographic work
Sample of photographic work
 

Injection de dépendances

  • 1. Injection de dépendance Mathurin BODY TTFx Breizh User Group 1
  • 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