20140227 - injection de dépendances - mug lyon
DESCRIPTION
Live coding au MUGLyon. Voir les commentaires des slides pour les explications (télécharger le PPT pour les voir) + le repository GitHub suivant avec les étapes représentées par des commits séparés : https://github.com/devcrafting/CouplingAndDependencyTRANSCRIPT
Injection/inversionde dépendances
MUG Lyon – 27 février 2014 – Hébergé par Sciences-UClé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 lajournée à LYON pour un événement mondial :
#gwab
http://bit.ly/1jn7pEG
Inscrivez-vous
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)
…mais DI, c’est aussi Dependency Inversion (Principle = DIP)
…mais si! Le D du principe SOLID
…et on parle aussi d’IoC (Inversion of Control), non ?
commençons par là
POURQUOI ?
Couplage faible (Low coupling) VS fort
Testabilité
Extensibilité
DEMO
UTILISONS UN CONTAINER IoC/DI
Convention over Configuration pour le Register
DEMO
Proche des patterns Factory/Abstract Factory
Injection par constructeur, par setter ou par méthode
USAGES « AVANCES »
Implémenter le pattern Strategy
DEMO
Implémenter le pattern Singleton/cycles de vie des objets injectés
Plusieurs Register pour une même classe/interface
QUELQUES FAUSSES BONNES IDEES !
Injection du Container = Service Locator
Faire des usines à gaz !
Anti-pattern ServiceLocator
DEMO
Injecter des/dans les entités
ET PLUS ENCORE…
Architecture hexagonale/en oignon
Domain Driven Design
Domain Events
Feedback
MERCI !
Quelques références
Martin Fowler sur IoC/DI : http://martinfowler.com/articles/injection.htmlUncle Bob sur le DIP : http://www.oodesign.com/dependency-inversion-principle.htmlMark 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-your-domain-a-primer/