Académique Documents
Professionnel Documents
Culture Documents
Plan
Introduction Inversion de contrle IoC Les objectifs Exemple Injection de dpendance DI Types de DI Les Conteneurs DI Spring
Les objectifs :
Faire que le code ait : Un faible couplage Une forte cohsion Plus de flexibilit Rendre les tests unitaires possible Comment? Dplacez la cration des dpendances en dehors de la classe o ils sont utiliss.
Injection de dpendance
L'injection de dpendances est le mcanisme qui permet d'implmenter le principe d'inversion de contrle. Il consiste crer dynamiquement (injecter) les dpendances entre les diffrentes classes en s'appuyant sur une description (fichier de configuration ou mtadonnes). Ainsi les dpendances entre composants logiciels ne sont plus exprimes dans le code de manire statique mais dtermines dynamiquement l'excution.
Shma :
IoC
DI
Constructeur
Interface
Setter
Code traditionnelle
public class CameraMan { Picture pic; public void shoot() { pic = new Picture(); pic.action(); } }
Setter
public class CameraMan { Picture pic; void setPic(Picture pic2){ this.pic = pic2; } public void shoot() { pic.action(); } }
Constructeur
public class CameraMan { Camera cam; CameraMan(Camera cam2){ cam= cam2; } public void shoot() { cam.action(); } }
public class Picture implements Camera{ public void action() { println(take Picture"); } }
public class Video implements Camera{ public void action() { println(take video"); } }
Main Class :
public class MainClass { public static void main(String[] args) { Picture pic = new Picture(); Video vid = new Video(); CameraMan cMan = new CameraMan(pic); cMan.shoot(); } }
Les Conteneurs DI
Cre des objets qui sont prts utiliser Sait comment crer des objets et leurs dpendances Sait comment initialiser des objets lorsqu'ils sont crs Assure un soutien du cycle de vie Un conteneur n'est rien de plus qu'un dictionnaire d'interfaces et de leurs implmentations
Les Conteneurs DI
spring Framework Unity Castle Windsor Ninject StructureMap