Kiire sissejuhatus sõltuvuse süstimisse: mis see on ja millal seda kasutada

Foto autor Rawpixel saidil Unsplash

Sissejuhatus

Tarkvaraehituses on sõltuvuse süstimine tehnika, mille abil üks objekt (või staatiline meetod) varustab teise objekti sõltuvusi. Sõltuvus on objekt, mida saab kasutada (teenus).

See on Vikipeedia määratlus, kuid siiski, kuid seda pole eriti lihtne mõista. Mõistagem siis paremini.

Enne kui mõistame, mida see programmeerimisel tähendab, uurime kõigepealt, mida see üldiselt tähendab, kuna see aitab meil kontseptsioonist paremini aru saada.

Sõltuvus või sõltuvus tähendab toetusele toetumist millelegi. Nagu ma ütlen, et me sõltume liiga palju mobiiltelefonidest, kui tähendab, et oleme neist sõltuvad.

Nii et enne sõltuvussüstidele jõudmist mõelgem kõigepealt, mida tähendab sõltuvus programmeerimisest.

Kui klass A kasutab mõnda klassi B funktsionaalsust, siis ütles klass, et klassil A on sõltuvus klassist B.

Näidatakse klassidevahelisi sõltuvusi

Enne Java kasutamist, enne kui saame kasutada teiste klasside meetodeid, peame kõigepealt looma selle klassi objekti (st klass A peab looma klassi B eksemplari).

Niisiis, objekti loomise ülesande ülekandmist kellelegi teisele ja sõltuvuse otsest kasutamist nimetatakse sõltuvuse süstimiseks.

Mis siis, kui kood võiks rääkida?

Miks peaksin kasutama sõltuvuse süstimist?

Ütleme nii, et meil on autoklass, mis sisaldab mitmesuguseid objekte nagu rattad, mootor jne.

Autoklass vastutab kõigi sõltuvusobjektide loomise eest. Mis siis saab, kui me otsustame tulevikus MRFWheels kraavi kaevata ja soovime Yokohama rattaid kasutada?

Peame autoobjekti uuesti looma, kasutades seda uut Yokohama sõltuvust. Kuid sõltuvuse süstimise (DI) kasutamisel saame rattaid vahetada käitusaja ajal (kuna sõltuvusi saab süstida töö ajal, mitte kompileerimise ajal).

Võite mõelda DI-st kui meie koodis vahendajast, kes teeb kõik tööd eelistatud rataste objekti loomiseks ja selle autoklassile edastamiseks.

See muudab meie autoklassi rataste, aku jms objektide loomisest sõltumatuks.

Põhimõtteliselt on sõltuvuse süstimist kolme tüüpi:

  1. konstruktori sissepritse: sõltuvused saadakse klassi konstruktori kaudu.
  2. setteri süstimine: klient paljastab setteri meetodi, mida injektor kasutab sõltuvuse süstimiseks.
  3. liidese süstimine: sõltuvus pakub injektormeetodit, mille abil süstitakse sõltuvus igasse talle edastatud klienti. Kliendid peavad rakendama liidese, mis paljastab sõltuvust aktsepteeriva setteri meetodi.

Nüüd on selle sõltuvuse süstimise kohustus:

  1. Loo objektid
  2. Tea, millised klassid neid objekte vajavad
  3. Ja varustage need objektid neile kõigile

Kui objektides on muudatusi, uurib DI seda ja see ei tohiks puudutada klassi, kus neid objekte kasutatakse. Nii kui objektid tulevikus muutuvad, on DI vastutus pakkuda klassile sobivaid objekte.

Juhtimise ümberpööramine - DI taga olev idee

See väidab, et klass ei peaks oma sõltuvusi staatiliselt konfigureerima, vaid selle peaks seadistama mõni muu klass väljastpoolt.

See on S.O.L.I.D viies põhimõte - onu Bobi objektorienteeritud programmeerimise ja kujundamise viis peamist põhimõtet -, mis väidab, et klass peaks sõltuma abstraktsioonist, mitte betoneerimistest (lihtsustatult öeldes kõvakodeeritud).

Põhimõtete kohaselt peaks klass keskenduma oma kohustuste täitmisele ja mitte objektide loomisele, mida ta nõuab nende kohustuste täitmiseks. Ja just seal mängib sõltuvuse süstimine: see annab klassile vajalikud objektid.

Märkus. Kui soovite onu Bobilt õppida SOLIDi põhimõtete kohta, siis võite selle lingi juurde minna.

DI kasutamise eelised

  1. Aitab üksuse testimisel.
  2. Katla plaadi kood on vähenenud, kuna sõltuvused lähtestab injektori komponent.
  3. Rakenduse laiendamine muutub lihtsamaks.
  4. Aitab võimaldada lahtihaakimist, mis on rakenduse programmeerimisel oluline.

DI puudused

  1. Seda on natuke keeruline õppida ja kui seda liiga palju kasutada, võib see tekitada haldusprobleeme ja muid probleeme.
  2. Paljud kompileeritud ajavead lükatakse tööajale.
  3. Sõltuvuse süstimise raamistikke rakendatakse peegelduse või dünaamilise programmeerimisega. See võib takistada IDE automatiseerimise kasutamist, näiteks „viidete otsimine”, „kõnehierarhia näitamine” ja turvaline uuesti reageerimine.

Sõltuvuse süstimist saate teostada iseseisvalt (Pure Vanilla) või kasutada muude tootjate raamatukogusid või raamistikke.

Raamatukogud ja raamistikud, mis rakendavad DI

  • Kevad (Java)
  • Google Guice (Java)
  • Dagger (Java ja Android)
  • Windsori kindlus (.NET)
  • Unity (.NET)

Lisateavet sõltuvuse süstimise kohta leiate järgmistest ressurssidest:

Java-sõltuvuse süstimine - DI kujundusmustri näiteõpetus - JournalDev

Sõltuvuse süsti kasutamine Java-s - Sissejuhatus - Õpetus - Vogella

Kontrollmahutite ümberpööramine ja sõltuvuse süstimise muster - Martin Fowler

Loodan, et see aitab!

Kui teile artikkel meeldis ja soovite lugeda rohkem hämmastavaid artikleid, siis jälgige mind siin (Bhavya Karia) ja näidake üles oma toetust, kuna see motiveerib mind rohkem kirjutama.

Kui teil on minult küsimusi või tagasisidet, siis looge ühendust LinkedInis, Twitteris ja Facebookis.

1. redigeerimine:

Tänu Sergei Ufocoderile on see artikkel nüüd vene keelde muudetud. Mu vene sõbrad ja kõik, kes oskavad vene keelt lugeda, annavad seda lugeda.

Link artiklile

Kui soovite kasutada DI-d JavaScriptis ja otsite raamatukogu, soovitab Jo Surikat proovida tema raamatukogu.

Di-Ninja

Nicolas Froidure soovitas veel ühte vingeid DI-teemasid JavaScriptis.

nugaratas

2. redigeerimine:

Kui olete PHP arendaja, siis ärge muretsege, et ka teid kõiki käsitletaks. Gordon Forsythe soovitas seda hämmastavat raamatukogu, mida võiksite kõik proovida.

auryn

Tänan kõigi lahkete sõnade eest, mida olen saanud. Jagage artiklit nii, et sellest saaks kasu üha rohkem inimesi.

Kui olete õppinud isegi asja või kaks, siis plaksutage oma käsi nii palju kordi (50 ) kui võimalik, et oma tuge näidata!