..


Sponsorerede links

IOC og DI (Inversion of Control og afhængighed Injection)

'S Inversion of Control (IOC) er et typisk træk ved den ramme, som flytter flow kontrol fra ansøgning til ramme i sig selv.

Lad os tage et eksempel for at tydeliggøre begrebet: hvis du opretter en GUI API gennem sving , programmøren kun behøver at gennemføre handlere af begivenheder udløst af brugeren, såsom at trykke på en knap eller indtaste tekst. Framework er overladt til kontrol med anvendelsen flow, såsom lukning og åbning af vinduer.

Denne type adfærd kaldes IOC, fordi kontrollen er flyttet af udvikleren af rammen.

Når det er klart, hvad IOC, vi ser, hvordan det bliver brugt i foråret.
Alle ansøgninger består af objekter, når de forud fastlagte mål må samarbejde med hinanden, og uundgåeligt dannes afhængighed. Normalt disse afhængigheder er løst ved en kode, der er egnet til konfiguration (typisk fabrikanten). Antag, at vi er nødt til at gennemføre en klasse for at forvalte en videobutik:






 it.mrwebmaster pakke;









 import java.util.ArrayList;







 import java.util.List;









 {Public class VideoManager





  



 Privat DvdService dvdService;





  



 offentlige VideoManager () {



    



 super ();



    



 / **



     



 * Konfiguration og løse afhængighedsproblemer



     



 * /



    



 this.dvdService DvdServiceImpl = new ();



  



 }





  



 <Dvd> GetAvalaibleDvdList offentlig liste () {



    



 / **



     



 * Hent en liste over dvd



     



 * /



    



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





    



 / **



     



 * Loop gennem listen af ​​dvd'er for at finde

 

     



 * Der er til rådighed



     



 * /



    



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





    



 for (DVD DVD: dvdList) {



      



 if (dvd.isDisponibile ()) {



        



 availabeDvdList.add (DVD);



      



 }



    



 }





    



 availabeDvdList vende tilbage;



  



 }

	





 }



I dette eksempel klassen VideoManager har til opgave at inddrive listen over ikke-lejet DVD. Listen er hentet ved hjælp af en tjeneste (DvdService), der henter en liste over alle de dvd'er, og cykling på listen er dvd'en til rådighed. Klassen VideoManager har derfor en afhængighed på objektet DvdService, der er løst i konstruktøren.

Diagramma Dipendenze

Hvis vi ikke havde brugt foråret skal vi have at bekymre sig om at løse dipendeza VideoManager i klassen konstruktør, da afhængigheden ville blive løst i foråret.
I foråret, så er IOC bruges til at invertere kontrol over konfigurationen afhængigheder. Af denne grund blev opfundet af Martin Fowler, i sin berømte artikel , at udtrykket Dependecy Injection (DI), der undertiden bruges fejlagtigt som synonym IOC id.
Det grundlæggende koncept for DI er at have et separat objekt til at gøre det løse afhængighedsproblemer og initialisering.

Følgende assembler klasse, har til opgave at initialisere klassen DvdService:

Diagramma Assembler

Der er tre typer af Dependecy Injektion:

  • Grænseflade injektion
  • Setter injektion
  • Constructor Injection
I foråret, som vi senere skal se, er kun gennemført Constructor og Setter Injection, men det er også muligt at formatere og oprette objekter gennem Object Factory og Factory Method.

Spring Java Guide
E-Learning
Linux (Kursus) Linux (Kursus)
Komplet guide til open source-system. Fra 49 €.
PHP (Kursus) PHP (Kursus)
Fuld kursus for at skabe dynamiske web-sites. Fra 49 €.
Ruby og Ruby on Rails (Kursus) Ruby og Ruby on Rails (Kursus)
Opret software og web-applikationer med Ruby og RoR. Fra 39 €.
Sponsorerede links