..


Enllaços patrocinats

IOC i DI (inversió de control i injecció de dependència)

Inversió'S de Control (IOC) és una característica típica de l'estructura, que es mou el control de flux per l'aplicació per al propi marc.

Prenguem un exemple per aclarir el concepte: si es crea una interfície gràfica d'usuari de l'API a través de gir , el programador només necessita implementar els controladors d'esdeveniments activats per l'usuari, com prémer un botó o la introducció de text. Marc es queda per controlar el flux de l'aplicació, com ara el tancament i l'obertura de finestres.

Aquest tipus de comportament es coneix com IOC, perquè es mou el control pel desenvolupador del marc.

Un cop està clar el que el COI, veiem com s'utilitza a la primavera.
Totes les aplicacions consisteixen en objectes que arriben a la meta per defecte han de cooperar amb els altres, i inevitablement es formen dependència. Normalment, aquestes dependències es resolen mitjançant un codi que és adequat per a la configuració (en general el fabricant). Suposem que hem de implementar una classe per a la gestió d'una botiga de vídeos:






 it.mrwebmaster paquet;









 importació java.util.ArrayList;







 importació java.util.List;









 {Public VideoManager classe





  



 DvdService DvdService privat;





  



 VideoManager pública () {



    



 super ();



    



 / **



     



 * Configuració i resolució de dependències



     



 * /



    



 this.dvdService DvdServiceImpl = new ();



  



 }





  



 <Dvd> Llista getAvalaibleDvdList pública () {



    



 / **



     



 * Recuperar la llista de DVD



     



 * /



    



 Llista <Dvd> dvdList dvdService.getDvdList = ();





    



 / **



     



 * Recórrer la llista dels DVD per trobar

 

     



 * Els disponible



     



 * /



    



 Llista = new ArrayList <Dvd> availabeDvdList <Dvd> ();





    



 per (DVD DVD: dvdList) {



      



 if (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD);



      



 }



    



 }





    



 availabeDvdList retorn;



  



 }

	





 }



En aquest exemple el VideoManager classe té la tasca de recuperar la llista de no llogar DVD. La llista es recupera mitjançant un servei (DvdService), que recupera una llista de tots els DVD, i el ciclisme en la llista són els DVD disponibles. El VideoManager classe, per tant, té una dependència de la DvdService objecte, que es resol en el constructor.

Diagramma Dipendenze

Si no haguéssim utilitzat la primavera hauríem de preocupar per resoldre el VideoManager dipendeza en el constructor de la classe, ja que la dependència es resoldria a la primavera.
A la primavera, llavors, el COI s'utilitza per invertir el control de les dependències de configuració. Per aquesta raó, va ser encunyat per Martin Fowler, en el seu famós article , la injecció Dependecy termini (DI), que de vegades s'utilitza incorrectament com a sinònim d'identificació del COI.
El concepte bàsic de la DI és tenir un objecte per separat a la resolució de dependències i la inicialització.

La classe de assemblador següent, té la tasca d'iniciar el DvdService classe:

Diagramma Assembler

Hi ha tres tipus d'injecció Dependecy:

  • Interfície d'injecció
  • Setter injecció
  • Constructor d'injecció
A la primavera, com veurem més endavant, s'apliquen únicament i Constructor injecció de setter, però també és possible inicialitzar i crear objectes a través de la Fàbrica d'objecte i mètode de fàbrica.

Primavera Guia Java
E-Learning
Linux (Curs) Linux (Curs)
Guia completa de codi obert del sistema. A partir de 49 €.
PHP (Curs) PHP (Curs)
Cicle complet per a la creació de llocs web dinàmics. A partir de 49 €.
Ruby i Ruby on Rails (Curs) Ruby i Ruby on Rails (Curs)
Crear aplicacions de programari i la web amb Ruby i RoR. A partir de 39 €.
Enllaços patrocinats