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

Sissejuhatus

Tarkvaratehnikas 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 sellest pole eriti lihtne aru saada. Nii et mõistame seda paremini.

Enne kui mõistame, mida see programmeerimisel tähendab, vaatame kõigepealt, mida see üldiselt tähendab, kuna see aitab meil mõistet paremini mõista.

Sõltuvus või sõltuvus tähendab toetuse saamiseks millegi toetumist. Nagu siis, kui ütlen, et loodame liiga palju mobiiltelefonidele, kui see tähendab, et sõltume neist.

Nii et enne sõltuvussüstidesse jõudmist mõistame kõigepealt, mida tähendab sõltuvus programmeerimises.

Kui A-klass kasutab mõnda B-klassi funktsionaalsust, ütles ta, et A-klass sõltub B-klassist.

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

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

Miks peaksin kasutama sõltuvussüsti?

Oletame, et meil on autoklass, mis sisaldab mitmesuguseid esemeid, nagu rattad, mootor jne.

Siin vastutab kõigi sõltuvusobjektide loomise eest autoklass. Mis siis saab, kui otsustame tulevikus MRFWheelsi kraavi viia ja soovime kasutada Yokohama Wheels'i?

Peame autoobjekti uuesti looma uue Yokohama sõltuvusega. Kuid sõltuvussüstimise (DI) kasutamisel saame rattaid muuta käitusajal (kuna sõltuvusi saab süstida pigem käitamise ajal kui kompileerimise ajal).

Võite mõelda, et DI on meie koodeksi vahendaja, kes teeb kogu töö eelistatud rataste objekti loomiseks ja selle pakkumiseks autoklassile.

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

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

  1. konstruktori sissepritsimine: sõltuvused antakse 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 pihusti meetodit, mis süstib sõltuvust igale sellele edastatud kliendile. Kliendid peavad juurutama liidese, mis paljastab setteri meetodi, mis aktsepteerib sõltuvust.

Nüüd on sõltuvussüst vastutus:

  1. Looge objektid
  2. Tea, millistes klassides neid objekte vaja on
  3. Ja andke neile kõik need esemed

Kui objektides on mingeid muutusi, uurib DI seda ja see ei tohiks puudutada neid objekte kasutavat klassi. Sel moel, kui objektid tulevikus muutuvad, on tema DI kohustus anda klassile sobivad objektid.

Juhtimise inversioon - DI taga olev mõiste

See ütleb, et klass ei peaks oma sõltuvusi staatiliselt konfigureerima, vaid selle peaks konfigureerima mõni teine ​​klass väljastpoolt.

See on tahke aine viies põhimõte -onu Bobi objektorienteeritud programmeerimise ja kujundamise viis põhiprintsiipi - mis ütleb, et klass peaks sõltuma abstraktsioonist, mitte konkretsioonidest (lihtsustatult, kõvakoodiga).

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

Märkus. Kui soovite onu Bobi SOLID põhimõtete kohta lisateavet, võite minna sellele lingile.

DI kasutamise eelised

  1. Aitab üksuse testimisel.
  2. Katla plaadi kood on vähenenud, kuna sõltuvuste lähtestamise teeb pihusti komponent.
  3. Rakenduse laiendamine muutub lihtsamaks.
  4. Aitab võimaldada lahtist sidumist, mis on rakenduse programmeerimisel oluline.

DI puudused

  1. Õppimine on natuke keeruline ja liigne kasutamine võib põhjustada juhtimisprobleeme ja muid probleeme.
  2. Paljud kompileerimisaja vead lükatakse jooksuaega.
  3. Sõltuvuse süstimise raamistikke rakendatakse peegelduse või dünaamilise programmeerimisega. See võib takistada IDE-automatiseerimise kasutamist, näiteks "viite leidmine", "kõnehierarhia näitamine" ja turvaline taastamine.

Sõltuvuse süstimist saate ise rakendada (Pure Vanilla) või kasutada kolmandate osapoolte teeke või raamistikke.

Raamatukogud ja raamistikud, mis rakendavad DI-d

  • Kevad (Java)
  • Google Guice (Java)
  • Pistoda (Java ja Android)
  • Windsori kindlus (.NET)
  • Ühtsus (.NET)

Sõltuvuse süstimise kohta lisateabe saamiseks vaadake allolevaid ressursse:

Java sõltuvuse süstimine - DI kujundusmalli näidisõpetus - JournalDev

Sõltuvussüsti kasutamine Java-s - sissejuhatus - õpetus - Vogella

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

Loodan, et see aitab!

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

Kui teil on minu jaoks küsimusi või tagasisidet, võtkem ühendust LinkedInis, Twitteris, Facebookis.

Muuda 1:

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

Link artiklile

Samuti, kui soovite DI-d JavaScripti rakendada ja otsite raamatukogu, soovitab Jo Surikat proovida tema teeki.

Di-Ninja

Nicolas Froidure soovitas veel ühe vinge Java-raamatukogu JavaScriptis.

noa tsükkel

Muuda 2:

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

auryn

Täname kõiki häid sõnu, mida olen saanud. Jagage artiklit, et sellest saaks kasu üha rohkem inimesi.

Kui õppisite kasvõi mõne asja või kaks, jagage seda lugu!