9
TTFx Breizh User Group 1 Injection de dépendance Mathurin BODY

Injection de dépendances

Embed Size (px)

DESCRIPTION

Injections de dépendances pour Flex et AS3

Citation preview

Page 1: Injection de dépendances

TTFx Breizh User Group 1

Injection de dépendance

Mathurin BODY

Page 2: Injection de dépendances

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

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

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

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

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

TTFx Breizh User Group 7

3 façons d’injecter une dépendance

• Par annotation (type ou id)

Page 8: Injection de dépendances

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

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