SlideShare une entreprise Scribd logo
1  sur  13
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/

Contenu connexe

Tendances

[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec XamarinCellenza
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière Cellenza
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSOAT
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeMicrosoft
 
[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo
[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo
[Webinaire] Présentation de la création de workflow avec la Plateforme NuxeoNuxeo
 
Nuxeo Tech Talk AngularJS
Nuxeo Tech Talk AngularJSNuxeo Tech Talk AngularJS
Nuxeo Tech Talk AngularJSNuxeo
 
Faire une app en JS moderne
Faire une app en JS moderneFaire une app en JS moderne
Faire une app en JS moderneRaphaël Boucher
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCFRomain Coste
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FRNuxeo
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, LinuxYasmine Amrani
 
Keynote Azure
Keynote AzureKeynote Azure
Keynote AzureMicrosoft
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorArthurMaroulier
 
Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindPhilippe Didiergeorges
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Continuous S.A. presentation
Continuous S.A. presentationContinuous S.A. presentation
Continuous S.A. presentationcontinuousphp
 
Migration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebMigration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebOlivier NOEL
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 

Tendances (19)

[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin[XamarinDay] Développez de manière 100% native avec Xamarin
[XamarinDay] Développez de manière 100% native avec Xamarin
 
01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière 01 - [ASP.NET Core] Plénière
01 - [ASP.NET Core] Plénière
 
Soirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVCSoirée 3T Soat - Asp.net MVC
Soirée 3T Soat - Asp.net MVC
 
De A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicativeDe A à Z : Choisir une architecture pour sa solution applicative
De A à Z : Choisir une architecture pour sa solution applicative
 
[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo
[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo
[Webinaire] Présentation de la création de workflow avec la Plateforme Nuxeo
 
Nuxeo Tech Talk AngularJS
Nuxeo Tech Talk AngularJSNuxeo Tech Talk AngularJS
Nuxeo Tech Talk AngularJS
 
Faire une app en JS moderne
Faire une app en JS moderneFaire une app en JS moderne
Faire une app en JS moderne
 
Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017Meetup aix-js-28-08-2017
Meetup aix-js-28-08-2017
 
Présentation de WCF
Présentation de WCFPrésentation de WCF
Présentation de WCF
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR
 
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
5- [ASP.NET Core] Devops : VSTS, Git, Azure, Docker, Linux
 
Keynote Azure
Keynote AzureKeynote Azure
Keynote Azure
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
 
Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium Versusmind
 
JavaFX et le JDK9
JavaFX et le JDK9JavaFX et le JDK9
JavaFX et le JDK9
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Continuous S.A. presentation
Continuous S.A. presentationContinuous S.A. presentation
Continuous S.A. presentation
 
Migration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6WebMigration de technologie J2EE vers PHP à M6Web
Migration de technologie J2EE vers PHP à M6Web
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 

En vedette

Inversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionInversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionDinesh Sharma
 
Recherche en médecines pierre st vincent
Recherche en médecines  pierre st vincentRecherche en médecines  pierre st vincent
Recherche en médecines pierre st vincentPierre ST Vincent
 
French signs
French signsFrench signs
French signsEd Weiss
 
Manual de uso de outlook
Manual de uso de outlookManual de uso de outlook
Manual de uso de outlookLuis Cortez
 
Dossier de production version finale
Dossier de production version finaleDossier de production version finale
Dossier de production version finaleJohana Botbol
 
Bol pediatr2010 50_043-047
Bol pediatr2010 50_043-047Bol pediatr2010 50_043-047
Bol pediatr2010 50_043-047Jessica Yazmín
 
Le référencement web
Le référencement webLe référencement web
Le référencement webbrunocrozat
 
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.wplyon
 
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)monseferia
 

En vedette (20)

Inversion of Control and Dependency Injection
Inversion of Control and Dependency InjectionInversion of Control and Dependency Injection
Inversion of Control and Dependency Injection
 
Spring.NET
Spring.NETSpring.NET
Spring.NET
 
Petxakutxa
PetxakutxaPetxakutxa
Petxakutxa
 
Codvig008
Codvig008Codvig008
Codvig008
 
Recherche en médecines pierre st vincent
Recherche en médecines  pierre st vincentRecherche en médecines  pierre st vincent
Recherche en médecines pierre st vincent
 
French signs
French signsFrench signs
French signs
 
Manual de uso de outlook
Manual de uso de outlookManual de uso de outlook
Manual de uso de outlook
 
Blogs, forums et wikis
Blogs, forums et wikisBlogs, forums et wikis
Blogs, forums et wikis
 
Dossier de production version finale
Dossier de production version finaleDossier de production version finale
Dossier de production version finale
 
Proyecto de vida
Proyecto de vidaProyecto de vida
Proyecto de vida
 
L'écosystème Google
L'écosystème GoogleL'écosystème Google
L'écosystème Google
 
Medecine hyperbare
Medecine hyperbare Medecine hyperbare
Medecine hyperbare
 
Bustiada vila seca
Bustiada vila secaBustiada vila seca
Bustiada vila seca
 
Bol pediatr2010 50_043-047
Bol pediatr2010 50_043-047Bol pediatr2010 50_043-047
Bol pediatr2010 50_043-047
 
Cemain 1 CMH 2014
Cemain 1  CMH 2014Cemain 1  CMH 2014
Cemain 1 CMH 2014
 
Le référencement web
Le référencement webLe référencement web
Le référencement web
 
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
 
Bureau 2013 2014
Bureau 2013 2014Bureau 2013 2014
Bureau 2013 2014
 
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)
T 6-monserrat-feria-presentacion audiovisual sencilla 1(audiovisual sencilla)
 
PRODUCTE CULTURAL
PRODUCTE CULTURALPRODUCTE CULTURAL
PRODUCTE CULTURAL
 

Similaire à 20140227 - injection de dépendances - mug lyon

Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Samuel Metias
 
Les Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionLes Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionZeenat Nazaroudine
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxZALIMAZA
 
Présentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxPrésentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxZALIMAZA
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outilsAgile Tour 2009 Québec
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxZALIMAZA
 
Présentation DEVOPS_Black.pptx
Présentation DEVOPS_Black.pptxPrésentation DEVOPS_Black.pptx
Présentation DEVOPS_Black.pptxZALIMAZA
 
Présentation DEVOPSS.pptx
Présentation DEVOPSS.pptxPrésentation DEVOPSS.pptx
Présentation DEVOPSS.pptxZALIMAZA
 
Présentation DEVOPS_Mauritanie.pptx
Présentation DEVOPS_Mauritanie.pptxPrésentation DEVOPS_Mauritanie.pptx
Présentation DEVOPS_Mauritanie.pptxZALIMAZA
 
Présentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxPrésentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxZALIMAZA
 
Présentation DEVOPS-Majeur.pptx
Présentation DEVOPS-Majeur.pptxPrésentation DEVOPS-Majeur.pptx
Présentation DEVOPS-Majeur.pptxZALIMAZA
 
Présentation DEVOPS_.pptx
Présentation DEVOPS_.pptxPrésentation DEVOPS_.pptx
Présentation DEVOPS_.pptxZALIMAZA
 
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEO
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEONos trucs et astuces pour construire des produits que les devs adorent chez ADEO
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEOJulien Jakubowski
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...Adrien Blind
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMGrégory Ott
 
Présentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxPrésentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxssuserf298861
 
Biz talk summit devops - continuous delivery
Biz talk summit   devops - continuous deliveryBiz talk summit   devops - continuous delivery
Biz talk summit devops - continuous deliveryRadoine Douhou
 
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystème
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystèmeAlphorm.com Formation Architecture Microservices : Décryptage de l'écosystème
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystèmeAlphorm
 

Similaire à 20140227 - injection de dépendances - mug lyon (20)

Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
Microsoft DevOps Day 2015 02122015 - L'expérience du groupe produit Visual St...
 
Les Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolutionLes Tests : une évolution, pas une révolution
Les Tests : une évolution, pas une révolution
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptx
 
Présentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxPrésentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptx
 
Processus d’intégration continue et outils
Processus d’intégration continue et outilsProcessus d’intégration continue et outils
Processus d’intégration continue et outils
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptx
 
Présentation DEVOPS_Black.pptx
Présentation DEVOPS_Black.pptxPrésentation DEVOPS_Black.pptx
Présentation DEVOPS_Black.pptx
 
Présentation DEVOPSS.pptx
Présentation DEVOPSS.pptxPrésentation DEVOPSS.pptx
Présentation DEVOPSS.pptx
 
Présentation DEVOPS_Mauritanie.pptx
Présentation DEVOPS_Mauritanie.pptxPrésentation DEVOPS_Mauritanie.pptx
Présentation DEVOPS_Mauritanie.pptx
 
Présentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxPrésentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptx
 
Présentation DEVOPS-Majeur.pptx
Présentation DEVOPS-Majeur.pptxPrésentation DEVOPS-Majeur.pptx
Présentation DEVOPS-Majeur.pptx
 
Présentation DEVOPS_.pptx
Présentation DEVOPS_.pptxPrésentation DEVOPS_.pptx
Présentation DEVOPS_.pptx
 
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEO
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEONos trucs et astuces pour construire des produits que les devs adorent chez ADEO
Nos trucs et astuces pour construire des produits que les devs adorent chez ADEO
 
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
DevOps à l'échelle: ce que l'on a fait, ce que l'on a appris chez Societe Gen...
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALM
 
Adoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALMAdoption incrémentale des tests dans VS ALM
Adoption incrémentale des tests dans VS ALM
 
Présentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxPrésentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptx
 
Biz talk summit devops - continuous delivery
Biz talk summit   devops - continuous deliveryBiz talk summit   devops - continuous delivery
Biz talk summit devops - continuous delivery
 
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystème
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystèmeAlphorm.com Formation Architecture Microservices : Décryptage de l'écosystème
Alphorm.com Formation Architecture Microservices : Décryptage de l'écosystème
 

Plus de Clement Bouillier

EventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleEventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleClement Bouillier
 
20141021 - Coding dojo EventSourcing
20141021 - Coding dojo EventSourcing20141021 - Coding dojo EventSourcing
20141021 - Coding dojo EventSourcingClement Bouillier
 
20131210 - Hacker l’agilité - Human Talks Lyon
20131210 - Hacker l’agilité - Human Talks Lyon20131210 - Hacker l’agilité - Human Talks Lyon
20131210 - Hacker l’agilité - Human Talks LyonClement Bouillier
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
20131008 - uxda - human talk
20131008 - uxda - human talk20131008 - uxda - human talk
20131008 - uxda - human talkClement Bouillier
 

Plus de Clement Bouillier (6)

EventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-MarseilleEventStorming Agile Tour Aix-Marseille
EventStorming Agile Tour Aix-Marseille
 
20141021 - Coding dojo EventSourcing
20141021 - Coding dojo EventSourcing20141021 - Coding dojo EventSourcing
20141021 - Coding dojo EventSourcing
 
20131214 - gdcr 2013 - lyon
20131214 - gdcr 2013 - lyon20131214 - gdcr 2013 - lyon
20131214 - gdcr 2013 - lyon
 
20131210 - Hacker l’agilité - Human Talks Lyon
20131210 - Hacker l’agilité - Human Talks Lyon20131210 - Hacker l’agilité - Human Talks Lyon
20131210 - Hacker l’agilité - Human Talks Lyon
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
20131008 - uxda - human talk
20131008 - uxda - human talk20131008 - uxda - human talk
20131008 - uxda - human talk
 

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 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
  • 4. & vous invitent le samedi 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/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/
  • 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 (Low coupling) VS fort Testabilité POURQUOI ? Extensibilité  DEMO
  • 8. 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
  • 9. 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
  • 10. Anti-pattern ServiceLocator Injection du Container = Service Locator QUELQUES FAUSSES BONNES IDEES ! Injecter des/dans les entités Faire des usines à gaz !  DEMO
  • 11. Architecture hexagonale/en oignon Domain Driven Design ET PLUS ENCORE… Domain Events
  • 13. 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/