Injection/inversion
de dépendances
MUG Lyon – 27 février 2014 – Hébergé par Sciences-U
Clément Bouillier - @clem_bouillier
Le MUG Lyon
Une session tous les derniers jeudis du mois à Sciences-U (merci !)
•

Vote pour le futur logo MUGLyon

Prochaines sessions
•
•
•

Global Windows Azure Bootcamp le samedi 29 mars
Session d’avril : Gestion des périphériques modernes avec System Center
Configuration Manager
Session de mai : Code Simplicity avec Rui Carvalho

Suivez toutes les communautés lyonnaises sur le calendrier Lyon Tech Hub !
•
•

CARA Night Lean et startups le 4 mars
Human Talks le 11 mars
Logo MUGLyon
1

2

3
&
vous invitent le samedi 29 mars 2014 toute la
journée à LYON pour un événement mondial :

#gwab

Inscrivez-vous

http://bit.ly/1jn7pEG
Qui suis-je ?
Architecte/chef de projet/consultant mais avant tout
ARTISAN DEVELOPPEUR
> Twitter : @clem_bouillier

Membre actif des groupes suivants
> DevLyon : groupe de développeurs indépendants partageant une
vision de l’informatique créant de la valeur  http://devlyon.fr
> MUG Lyon : groupe de passionnés de technologies en
environnement Microsoft sur Lyon
> Fier d’être développeur : groupe visant à promouvoir le métier
de développeur en France  http://fierdetredeveloppeur.org/
Injection de dépendances = Dependency Injection (DI)
…et on parle aussi d’IoC (Inversion of Control), non ?
…mais DI, c’est aussi Dependency Inversion (Principle = DIP)

…mais si! Le D du principe SOLID

 commençons par là
Couplage faible (Low coupling) VS fort
Testabilité

POURQUOI ?

Extensibilité

 DEMO
Proche des patterns
Factory/Abstract Factory
Convention over Configuration pour le Register

UTILISONS UN CONTAINER IoC/DI
Injection par constructeur, par setter ou par méthode

 DEMO
Implémenter le pattern Singleton/cycles de vie des objets injectés

USAGES « AVANCES »
Plusieurs Register pour une même classe/interface
Implémenter le pattern Strategy

 DEMO
Anti-pattern ServiceLocator

Injection du Container = Service Locator

QUELQUES FAUSSES BONNES IDEES !
Injecter des/dans les entités

Faire des usines à gaz !

 DEMO
Architecture hexagonale/en oignon
Domain Driven Design

ET PLUS ENCORE…
Domain Events
Feedback

MERCI !
Quelques références
Martin Fowler sur IoC/DI :
http://martinfowler.com/articles/injection.html
Uncle Bob sur le DIP : http://www.oodesign.com/dependencyinversion-principle.html
Mark Seemann sur le Service Locator :
http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/
Jimmy Bogard sur DDD :
http://lostechies.com/jimmybogard/2010/02/04/strengthening-yourdomain-a-primer/

20140227 - injection de dépendances - mug lyon

  • 1.
    Injection/inversion de dépendances MUG Lyon– 27 février 2014 – Hébergé par Sciences-U Clément Bouillier - @clem_bouillier
  • 2.
    Le MUG Lyon Unesession tous les derniers jeudis du mois à Sciences-U (merci !) • Vote pour le futur logo MUGLyon Prochaines sessions • • • Global Windows Azure Bootcamp le samedi 29 mars Session d’avril : Gestion des périphériques modernes avec System Center Configuration Manager Session de mai : Code Simplicity avec Rui Carvalho Suivez toutes les communautés lyonnaises sur le calendrier Lyon Tech Hub ! • • CARA Night Lean et startups le 4 mars Human Talks le 11 mars
  • 3.
  • 4.
    & vous invitent lesamedi 29 mars 2014 toute la journée à LYON pour un événement mondial : #gwab Inscrivez-vous http://bit.ly/1jn7pEG
  • 5.
    Qui suis-je ? Architecte/chefde projet/consultant mais avant tout ARTISAN DEVELOPPEUR > Twitter : @clem_bouillier Membre actif des groupes suivants > DevLyon : groupe de développeurs indépendants partageant une vision de l’informatique créant de la valeur  http://devlyon.fr > MUG Lyon : groupe de passionnés de technologies en environnement Microsoft sur Lyon > Fier d’être développeur : groupe visant à promouvoir le métier de développeur en France  http://fierdetredeveloppeur.org/
  • 6.
    Injection de dépendances= Dependency Injection (DI) …et on parle aussi d’IoC (Inversion of Control), non ? …mais DI, c’est aussi Dependency Inversion (Principle = DIP) …mais si! Le D du principe SOLID  commençons par là
  • 7.
    Couplage faible (Lowcoupling) VS fort Testabilité POURQUOI ? Extensibilité  DEMO
  • 8.
    Proche des patterns Factory/AbstractFactory Convention over Configuration pour le Register UTILISONS UN CONTAINER IoC/DI Injection par constructeur, par setter ou par méthode  DEMO
  • 9.
    Implémenter le patternSingleton/cycles de vie des objets injectés USAGES « AVANCES » Plusieurs Register pour une même classe/interface Implémenter le pattern Strategy  DEMO
  • 10.
    Anti-pattern ServiceLocator Injection duContainer = Service Locator QUELQUES FAUSSES BONNES IDEES ! Injecter des/dans les entités Faire des usines à gaz !  DEMO
  • 11.
    Architecture hexagonale/en oignon DomainDriven Design ET PLUS ENCORE… Domain Events
  • 12.
  • 13.
    Quelques références Martin Fowlersur IoC/DI : http://martinfowler.com/articles/injection.html Uncle Bob sur le DIP : http://www.oodesign.com/dependencyinversion-principle.html Mark Seemann sur le Service Locator : http://blog.ploeh.dk/2010/02/03/ServiceLocatorisanAnti-Pattern/ Jimmy Bogard sur DDD : http://lostechies.com/jimmybogard/2010/02/04/strengthening-yourdomain-a-primer/