..


Link-uri sponsorizate

IOC şi DI (Inversarea de control şi de injecţie de dependenţă)

Inversarea "de control (IOC) este o caracteristică tipică a cadrului, care se mişcă fluxul de control de la punerea în aplicare a cadrului în sine.

Să luăm un exemplu pentru a clarifica conceptul: dacă vă creaţi un GUI API prin intermediul leagăn , programatorul nu trebuie decât să pună în aplicare Stivuitoare eveniment declanşat de către utilizator, cum ar fi apasarea unui buton sau introducerea textului. Cadru este lăsat să curgă aplicatii de control, cum ar fi închiderea şi deschiderea ferestrelor.

Acest tip de comportament este numit ca IOC de control este mutat de către dezvoltator a cadrului.

Odată ce este clar ceea ce este IOC, vom vedea cum este folosit în primăvară.
Toate cererile sunt formate din obiecte care atinge obiectivul ţintă ar trebui să coopereze cu alte fiecare, şi apoi în mod inevitabil se formează dependenţe. De obicei aceste dependenţe sunt rezolvate de către o bucata de cod care este adecvată pentru configurare (de obicei de producător). Să presupunem că avem să pună în aplicare o clasă pentru gestionarea unui magazin video:






 it.mrwebmaster pachet;









 java.util.ArrayList de import;







 java.util.List de import;









 public class {VideoManager





  



 Privare de DvdService dvdService;





  



 VideoManager publice () {



    



 super ();



    



 / **



     



 * Configurare şi rezolvarea dependenţelor



     



 * /



    



 this.dvdService DvdServiceImpl = new ();



  



 }





  



 <Dvd> Lista getAvalaibleDvdList publice () {



    



 / **



     



 * Preluare lista de DVD



     



 * /



    



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





    



 / **



     



 * Buclă prin lista de DVD-uri pentru a găsi

 

     



 * Aceste disponibile



     



 * /



    



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





    



 pentru (DVD: dvdList) {



      



 dacă (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD);



      



 }



    



 }





    



 availabeDvdList de returnare;



  



 }

	





 }



În acest exemplu VideoManager clasă are sarcina de a prelua lista non-inchiriat DVD. Lista este regăsită folosind un serviciu (DvdService), care preia o listă de toate DVD-urile, şi bicicleta de pe listă sunt disponibile pe DVD. VideoManager de clasă, prin urmare, are o dependenta de DvdService obiect, care este rezolvată în constructor.

Diagramma Dipendenze

Dacă nu am fi folosit de primăvară trebuie să avem să vă faceţi griji cu privire la rezolvarea VideoManager dipendeza în constructorul clasei, cum ar fi dependenţa rezolvate până în primăvara anului.
În primăvară, astfel încât IOC este folosit pentru a inversa dependenţele de configurare de control. Din acest motiv, a fost inventat de Martin Fowler, în celebrul său articol , injectie Dependecy termen lung (DI), care este uneori folosit incorect ca un sinonim pentru ID-ul CIO.
Conceptul de bază de DI este de a avea un obiect separat care se ocupa cu rezolvarea dependenţelor şi iniţializare.

Asamblor Următoarea categorie este responsabil pentru initializarea DvdService clasa:

Diagramma Assembler

Există trei tipuri de injecţie Dependecy:

  • Interfata injecţie
  • Setter injecţie
  • Constructor de injecţie
În primăvară, după cum vom vedea mai jos, sunt puse în aplicare numai Injectarea Constructor şi Setter, dar există, de asemenea, posibilitatea de a crea şi iniţializa obiecte prin Fabrica de obiect şi metodă Factory.

Java de primăvară Ghid
E-Learning
Curs Linux Curs Linux
Ghid complet pentru open-source de sistem. Incepand de la 49 €.
Curs PHP Curs PHP
Cursul completa pentru crearea de site-uri Web dinamice. Incepand de la 49 €.
Curs Ruby şi Ruby on Rails Curs Ruby şi Ruby on Rails
Crearea de aplicatii software si web cu Ruby şi RoR. Incepand de la 39 €.
Link-uri sponsorizate