Injection de dépendances

Preview:

DESCRIPTION

Injections de dépendances pour Flex et AS3

Citation preview

TTFx Breizh User Group 1

Injection de dépendance

Mathurin BODY

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()

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

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 !

TTFx Breizh User Group 5

3 types d’injection de dépendances

• Injection par setter

• Injection par interface (ou méthode)

• Injection par constructeur

TTFx Breizh User Group 6

3 façons d’injecter une dépendance

• Par configuration xml (ou mxml)

• Programmatiquement

TTFx Breizh User Group 7

3 façons d’injecter une dépendance

• Par annotation (type ou id)

TTFx Breizh User Group 8

Les frameworks Flex de DI (ou IoC)

• SwizFramework

• Spring Actionscript (prana)

• Parsley / spicelib

• Mate

• SmartyPants (inspired by Guice)

• Robotlegs

• …

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