Programiranje

Odlična razlaga vbrizgavanja odvisnosti (inverzija nadzora)

Prebral sem veliko razlag o vbrizganju odvisnosti ali DI (prej znano kot Inverzija nadzora) in s tem povezanem hollywoodskem načelu ("Ne kličite nas, poklicali vas bomo."). Vsi so ponavadi nejasni, bodisi zato, ker se takoj poglobijo v zelo podrobne razlage ali pa razlago posebej vežejo na določeno tehnologijo. Tako, da se vzorec izgubi ali pa je njegova preprostost. Tu je najjasnejša razlaga, ki sem jo našel - nekoliko kratko urejena (za zelo dobro Spring in Action, 2nd. Ed. Craig Walls):

"Vsaka netrivialna aplikacija je sestavljena iz dveh ali več razredov, ki med seboj sodelujejo, da bi izvedli neko poslovno logiko. Tradicionalno je vsak objekt odgovoren za pridobivanje lastnih sklicev na predmete, s katerimi sodeluje (njegove odvisnosti). Predmeti dobijo odvisnosti ob ustvarjanju s strani neke zunanje entitete, ki koordinira vsak objekt v sistemu. Z drugimi besedami, odvisnosti se vbrizgajo v predmete. "

To se mi zdi zelo jasno.

Injekcija odvisnosti se je prvotno imenovala Inverzija nadzora (IoC), ker bi bilo običajno krmilno zaporedje, da objekt sam najde predmete, od katerih je odvisen, in jih nato pokliče. Tu je to obrnjeno: odvisnosti se predajo predmetu, ko je ustvarjen. To ponazarja tudi hollywoodsko načelo pri delu: ne odkrivajte odvisnosti, dali vam jih bomo, ko vas potrebujemo.

Če ne uporabljate DI, se verjetno sprašujete, zakaj je to velika stvar. Zagotavlja ključno prednost: ohlapna sklopka. Predmete lahko dodajate in preizkušate neodvisno od drugih predmetov, ker niso odvisni od ničesar drugega kot od tega, kaj jim posredujete. Če uporabljate tradicionalne odvisnosti, morate za preizkus predmeta ustvariti okolje, v katerem obstajajo vse njegove odvisnosti in so dosegljive, preden ga lahko preizkusite. Z DI je mogoče objekt ločeno preizkusiti in mu posnemati predmete za tiste, ki jih ne želite ali jih morate ustvariti. Prav tako je olajšano dodajanje predavanja v projekt, ker je razred samostojen, zato se izognemo "veliki dlaki", v katero se pogosto razvijejo veliki projekti.

Izziv DI je pisanje celotne aplikacije z njeno uporabo. Nekaj ​​razredov ni nič hudega, vendar je celotna aplikacija veliko težja. Za celotne aplikacije pogosto želite ogrodje za upravljanje odvisnosti in interakcij med predmeti. Okvire DI pogosto poganjajo datoteke XML, ki pomagajo določiti, kaj komu in kdaj posredovati. Spring je polno storitev Java DI okvir; drugi lažji DI okviri vključujejo NanoContainer in še lažji PicoContainer.

Večina teh okvirov ima dobre vaje, ki pomagajo začetnikom najti pot.

To zgodbo z naslovom "Odlična razlaga vbrizga odvisnosti (inverzija nadzora)" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found