..


Sponsrade länkar

IOK och DI (Inversion of Control och Dependency Injection)

"S Inversion of Control (IoC) är ett typiskt inslag i den ram som flyttar flödeskontroll genom tillämpning av regelverket i sig.

Låt oss ta ett exempel för att klargöra begreppet: om du skapar ett GUI API genom svingen , programmeraren bara behöver genomföra hanterar händelser aktiveras av användaren, till exempel trycka på en knapp eller matar in text. Framework är kvar att kontrollera tillämpningen flödet, såsom stängning och fönster öppna.

Denna typ av beteende kallas IoC eftersom kontrollen flyttas av utvecklaren av ramverket.

När det är klart vad IOK, ser vi hur den används under våren.
Alla ansökningar utgöras av föremål som når förutbestämda mål måste samarbeta med varandra och oundvikligen bildas beroende. Normalt dessa beroenden löses med en kod som är lämplig för konfiguration (typiskt tillverkaren). Antag att vi måste genomföra en klass för att hantera en videobutik:






 it.mrwebmaster paket;









 import java.util.ArrayList;







 import java.util.List;









 {Public class VideoManager





  



 Privat DvdService dvdService;





  



 offentliga VideoManager () {



    



 super ();



    



 / **



     



 * Konfiguration och beroendelösning



     



 * /



    



 this.dvdService DvdServiceImpl = new ();



  



 }





  



 <Dvd> GetAvalaibleDvdList offentliga listan () {



    



 / **



     



 * Hämta listan över dvd



     



 * /



    



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





    



 / **



     



 * Loop igenom listan av dvd-skivor för att hitta

 

     



 * De finns



     



 * /



    



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





    



 för (DVD DVD: dvdList) {



      



 if (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD);



      



 }



    



 }





    



 availabeDvdList tillbaka;



  



 }

	





 }



I detta exempel klassen VideoManager har till uppgift att återvinna förteckningen över icke-hyrda DVD. Listan hämtas med hjälp av en tjänst (DvdService) som hämtar en lista över alla DVD-skivor, och cykla på den listan är DVD finns. Klassen VideoManager har därför ett beroende på objektet DvdService, som är löst i konstruktorn.

Diagramma Dipendenze

Om vi ​​inte hade använt våren bör vi oroa sig lösa dipendeza VideoManager i klassen konstruktören, eftersom beroendet skulle lösas under våren.
På våren är alltså IOK som används för att invertera kontroll över konfigurationen beroenden. Av denna anledning myntades av Martin Fowler, i sin berömda artikel , termen Dependecy Injection (DI), som ibland används felaktigt som en synonym IoC id.
Grundtanken med DI är att ha ett separat objekt för att göra beroendet upplösning och initiering.

Följande assembler klassen, har till uppgift att initiera klassen DvdService:

Diagramma Assembler

Det finns tre typer av Dependecy Insprutning:

  • Gränssnitt injektion
  • Setter injektion
  • Constructor Injection
Under våren, som vi skall se senare, genomförs endast konstruktören och setter injektion, men det är också möjligt att initiera och skapa objekt genom objektet Factory och Factory Method.

Spring Java-guide
E-Learning
Linux (kurs) Linux (kurs)
Komplett av öppen källkod-system. Från 49 €.
PHP (kurs) PHP (kurs)
Fullständig kurs för att skapa dynamiska webbplatser. Från 49 €.
Ruby och Ruby on Rails (kurs) Ruby och Ruby on Rails (kurs)
Skapa program och webbapplikationer med Ruby och RoR. Från 39 €.
Sponsrade länkar