Greita „Priklausomybės injekcijos“ įžanga: kas tai yra ir kada naudoti

Įvadas

Programinės įrangos inžinerijoje priklausomybės injekcija yra technika, kai vienas objektas (arba statinis metodas) teikia kito objekto priklausomybes. Priklausomybė yra objektas, kurį galima naudoti (paslauga).

Tai Vikipedijos apibrėžimas, bet vis tiek, bet tai nėra ypač lengva suprasti. Taigi supraskime tai geriau.

Prieš suprasdami, ką tai reiškia programuojant, pirmiausia pažiūrėkime, ką tai reiškia apskritai, nes tai padės mums geriau suprasti šią sąvoką.

Priklausomybė ar priklausomybė reiškia pasikliauti kuo nors palaikymu. Kaip jei sakau, kad per daug pasikliaujame mobiliaisiais telefonais, nei tai reiškia, kad esame nuo jų priklausomi.

Taigi, prieš eidami į priklausomybės injekcijas , pirmiausia supraskime, ką reiškia priklausomybė programuojant.

Kai A klasė naudoja tam tikrą B klasės funkcionalumą, tada ji teigė, kad A klasė priklauso nuo B klasės.

„Java“ sistemoje, kad galėtume naudoti kitų klasių metodus, pirmiausia turime sukurti tos klasės objektą (ty A klasei sukurti B klasės egzempliorių).

Taigi objekto sukūrimo užduoties perdavimas kitam ir tiesioginis priklausomybės naudojimas vadinamas priklausomybės injekcija.

Kodėl turėčiau naudoti priklausomybės injekciją?

Tarkime, kad turime automobilių klasę, kurioje yra įvairių objektų, tokių kaip ratai, variklis ir kt.

Čia automobilių klasė yra atsakinga už visų priklausomybės objektų sukūrimą. Ką daryti, jei ateityje nuspręsime nutraukti MRF ratus ir norime naudoti „ Yokohama Wheels“?

Turėsime atkurti automobilio objektą su nauja „Yokohama“ priklausomybe. Bet naudodami priklausomybės įpurškimą (DI), mes galime pakeisti ratus vykdymo metu (nes priklausomybes galima švirkšti ne vykdymo, o kompiliavimo metu).

Galite galvoti apie DI kaip tarpininką mūsų kode, kuris atlieka visą darbą kurdamas pageidaujamų ratų objektą ir pateikdamas jį automobilių klasei.

Tai daro mūsų automobilių klasę nepriklausomą nuo ratų, akumuliatorių ir kt. Objektų kūrimo.

Iš esmės yra trys priklausomybės injekcijos tipai:

  1. konstruktoriaus įpurškimas: priklausomybės pateikiamos per klasės konstruktorių.
  2. seterio injekcija: klientas atskleidžia seterio metodą, kurį injektorius naudoja įpurškdamas priklausomybę.
  3. sąsajos įpurškimas: priklausomybė suteikia injektoriaus metodą, kuris suleis priklausomybę į bet kurį jai perduotą klientą. Klientai turi įdiegti sąsają, kuri atskleidžia nustatytojo metodą, kuris priima priklausomybę.

Taigi dabar priklausomybės injekcija yra atsakinga už:

  1. Sukurkite objektus
  2. Žinokite, kurioms klasėms reikia tų objektų
  3. Ir pateikite jiems visus tuos daiktus

Jei yra kokių nors objektų pokyčių, tada DI juos nagrinėja ir tai neturėtų būti susiję su klase, naudojančia tuos objektus. Tokiu būdu, jei objektai ateityje pasikeis, tada jo DI pareiga pateikti klasei tinkamus objektus.

Valdymo inversija - DI koncepcija

Tai teigia, kad klasė neturėtų konfigūruoti savo priklausomybių statiškai, bet ją turi sukonfigūruoti kita klasė iš išorės.

Tai penktasis KIETO principas -penki pagrindiniai objekto orientuoto programavimo ir dėdės Bobo projektavimo principai - kurie teigia, kad klasė turėtų priklausyti nuo abstrakcijos, o ne nuo konkretizacijų (paprastai tariant, užkoduota).

Pagal principus klasė turėtų sutelkti dėmesį į savo pareigų vykdymą, o ne į objektų, reikalingų toms pareigoms atlikti, kūrimą. Štai kur atsiranda priklausomybės injekcija : ji suteikia klasei reikalingus objektus.

Pastaba: Jei norite sužinoti apie DĖDĖS Bobo SOLID principus, galite pereiti prie šios nuorodos.

DI naudojimo pranašumai

  1. Padeda bandant vienetą.
  2. Katilo plokštės kodas yra sumažintas, nes priklausomybes inicijuoja purkštuko komponentas.
  3. Išplėsti programą tampa lengviau.
  4. Padeda įjungti laisvą sujungimą, kuris yra svarbus programuojant programą.

DI trūkumai

  1. Išmokti yra šiek tiek sudėtinga, o per didelis vartojimas gali sukelti valdymo ir kitų problemų.
  2. Daugelis kompiliavimo laiko klaidų perkeliamos į vykdymo laiką.
  3. Priklausomybės įpurškimo sistemos įgyvendinamos atspindint ar dinamiškai programuojant. Tai gali trukdyti naudoti IDE automatiką, pvz., „Rasti nuorodas“, „rodyti skambučių hierarchiją“ ir saugų atnaujinimą.

Galite savarankiškai įdiegti priklausomybės injekciją („Pure Vanilla“) arba naudoti trečiųjų šalių bibliotekas ar sistemas.

Bibliotekos ir sistemos, įgyvendinančios DI

  • Pavasaris („Java“)
  • „Google Guice“ („Java“)
  • Durklas („Java“ ir „Android“)
  • Vindzoro pilis (.NET)
  • Vienybė (.NET)

Norėdami sužinoti daugiau apie priklausomybės injekciją, galite peržiūrėti šiuos išteklius:

„Java“ priklausomybės įpurškimas - DI dizaino modelio pamoka - „JournalDev

Priklausomybės injekcijos naudojimas „Java“ - Įvadas - Pamoka - „Vogella“

Kontrolinių konteinerių ir priklausomybės įpurškimo modelio apvertimas - Martin Fowler

Tikiuosi, kad tai padės!

Jei jums patiko straipsnis ir norite perskaityti daugiau nuostabių straipsnių, tada sekite mane čia (Bhavya Karia) ir parodykite savo palaikymą, nes tai mane motyvuoja rašyti daugiau.

Jei turite kokių nors klausimų ar atsiliepimų, susisiekime su „LinkedIn“, „Twitter“, „Facebook“.

1 redagavimas:

Sergejaus Ufocoderio dėka šis straipsnis paverstas rusų kalba. Mano draugai rusai ir visi, kurie moka skaityti rusų kalbą, iš tikrųjų ją skaito.

Nuoroda į straipsnį

Be to, jei norite pritaikyti DI „JavaScript“ ir ieškote bibliotekos, Jo Surikat siūlo pabandyti jo biblioteką.

Di-Ninja

Dar vieną nuostabią DI biblioteką „JavaScript“ pasiūlė Nicolas Froidure.

peilių ciklas

2 redagavimas:

Jei esate PHP kūrėjas, tada nesijaudinkite, taip pat jus aprėpė visi. Gordonas Forsythe'as rekomendavo šią nuostabią biblioteką, kurią visi norėtumėte išbandyti.

auryn

Ačiū už visus malonius žodžius, kuriuos gavau. Ar pasidalykite straipsniu, kad vis daugiau žmonių galėtų pasinaudoti.

Jei sužinojote nors vieną ar du dalykus, pasidalinkite šia istorija!