Nopea esittely riippuvuusinjektioon: mikä se on ja milloin sitä käytetään

Johdanto

Ohjelmistotuotannossa riippuvuusinjektio on tekniikka, jossa yksi esine (tai staattinen menetelmä) toimittaa toisen objektin riippuvuudet. Riippuvuus on objekti, jota voidaan käyttää (palvelu).

Se on Wikipedian määritelmä, mutta silti, mutta sitä ei ole erityisen helppo ymmärtää. Joten ymmärretään se paremmin.

Ennen kuin ymmärrämme, mitä se tarkoittaa ohjelmoinnissa, katsotaan ensin, mitä se tarkoittaa yleensä, koska se auttaa meitä ymmärtämään käsitteen paremmin.

Riippuvuus tai riippuvuus tarkoittaa tukeutumista johonkin. Kuten jos sanon, että luotamme liikaa matkapuhelimiin kuin se tarkoittaa, että olemme riippuvaisia ​​niistä.

Joten ennen kuin pääsemme riippuvuusinjektioihin , ymmärretään ensin, mitä riippuvuus ohjelmoinnissa tarkoittaa.

Kun luokka A käyttää jotakin luokan B toiminnallisuutta, sen mukaan luokan A riippuvuus on luokka B.

Ennen kuin voimme käyttää muita luokkamenetelmiä Java-sovelluksessa, meidän on ensin luotava kyseisen luokan objekti (eli luokan A on luotava luokan B ilmentymä).

Joten objektin luomistehtävän siirtämistä jollekin toiselle ja suoraan riippuvuuden käyttöä kutsutaan riippuvuusinjektioksi.

Miksi minun pitäisi käyttää riippuvuusinjektiota?

Oletetaan, että meillä on autoluokka, joka sisältää erilaisia ​​esineitä, kuten pyöriä, moottoria jne.

Täällä autoluokka on vastuussa kaikkien riippuvuusobjektien luomisesta. Entä jos päätämme kaataa MRFWheels tulevaisuudessa ja haluamme käyttää Yokohama Wheelsia ?

Meidän on luotava auto-objekti uudella Yokohama-riippuvuudella. Mutta kun käytetään riippuvuusinjektiota (DI), voimme vaihtaa pyörät ajon aikana (koska riippuvuuksia voidaan injektoida ajon aikana eikä kokoamisajankohtana).

Voit ajatella DI: tä koodissamme olevana välittäjänä, joka tekee kaiken työn haluttujen pyörien objektin luomisesta ja toimittamisesta sen autoluokkaan.

Se tekee autoluokastamme riippumattoman vanteiden, akkujen jne. Esineiden luomisesta.

Riippuvuusinjektioita on periaatteessa kolme tyyppiä:

  1. konstruktorin ruiskutus: riippuvuudet saadaan luokan rakentajan kautta.
  2. setteriruiskutus: asiakas paljastaa setterimenetelmän, jota injektori käyttää riippuvuuden ruiskuttamiseen.
  3. rajapinnan injektio: riippuvuus tarjoaa injektorimenetelmän, joka ruiskuttaa riippuvuuden mihin tahansa sille välitettävään asiakkaaseen. Asiakkaiden on toteutettava käyttöliittymä, joka paljastaa setterimenetelmän, joka hyväksyy riippuvuuden.

Joten nyt sen riippuvuusinjektion vastuu:

  1. Luo objektit
  2. Tiedä, mitkä luokat edellyttävät näitä esineitä
  3. Ja anna heille kaikki nuo esineet

Jos kohteissa tapahtuu muutoksia, DI tarkastelee niitä, eikä sen pitäisi koskea kyseisiä esineitä käyttävää luokkaa. Tällä tavoin, jos objektit muuttuvat tulevaisuudessa, sen DI: n vastuu toimittaa sopivat objektit luokalle.

Hallinnan kääntäminen - DI: n taustalla oleva käsite

Siinä todetaan, että luokan ei pitäisi määrittää riippuvuuksiaan staattisesti, vaan jonkun muun luokan tulisi konfiguroida ulkopuolelta.

Se on SOLIDin viides periaate -viiden perusperiaatteen olio-ohjelmointi ja design Uncle Bob - jossa todetaan, että luokka pitäisi riippua vedenoton eikä siitä concretions (yksinkertaisesti, kovakoodatuilla).

Periaatteiden mukaan luokan tulisi keskittyä täyttämään velvollisuutensa eikä luomaan esineitä, joita se tarvitsee näiden velvollisuuksien täyttämiseksi. Ja tässä riippuvuusinjektio tulee esiin: se tarjoaa luokalle tarvittavat esineet.

Huomaa: Jos haluat oppia Bob-setän SOLID- periaatteista, voit siirtyä tähän linkkiin.

DI: n käytön edut

  1. Auttaa yksikötestauksessa.
  2. Kattilan levykoodia pienennetään, koska riippuvuuksien alustaminen tapahtuu injektorikomponentilla.
  3. Sovelluksen laajentaminen on helpompaa.
  4. Auttaa mahdollistamaan löysän kytkennän, mikä on tärkeää sovelluksen ohjelmoinnissa.

DI: n haitat

  1. Se on vähän monimutkainen oppia, ja liiallinen käyttö voi johtaa hallintaan ja muihin ongelmiin.
  2. Monet kääntöaikavirheet työnnetään ajoaikaan.
  3. Riippuvuuden injektiokehykset toteutetaan heijastuksella tai dynaamisella ohjelmoinnilla. Tämä voi estää IDE-automaation käyttöä, kuten "etsi viitteet", "näytä puheluhierarkia" ja turvallinen uudelleenhallinta.

Voit toteuttaa riippuvuusinjektion itse (Pure Vanilla) tai käyttää kolmannen osapuolen kirjastoja tai kehyksiä.

Kirjastot ja kehykset, jotka toteuttavat DI: n

  • Kevät (Java)
  • Google Guice (Java)
  • Tikari (Java ja Android)
  • Castle Windsor (.NET)
  • Unity (.NET)

Saat lisätietoja riippuvuusinjektiosta tutustumalla alla oleviin resursseihin:

Java-riippuvuuden injektio - DI-mallikuvion esimerkkiopetus - JournalDev

Riippuvuusinjektion käyttäminen Java - Johdanto - Opetusohjelma - Vogella

Kontrollisäiliöiden kääntäminen ja riippuvuuden injektiomalli - Martin Fowler

Toivottavasti se auttaa!

Jos pidit artikkelista ja haluat lukea lisää upeita artikkeleita, seuraa minua täällä (Bhavya Karia) ja osoita tukeasi, koska se motivoi minua kirjoittamaan enemmän.

Jos sinulla on kysyttävää tai palautetta minulle, otamme yhteyttä LinkedInissä, Twitterissä, Facebookissa.

Muokkaa 1:

Kiitos Sergey Ufocoderille, tämä artikkeli on nyt muunnettu venäjäksi. Venäläiset ystäväni ja jotka kaikki osaavat lukea venäjän kieltä, antavat sille lukea.

Linkki artikkeliin

Lisäksi, jos haluat käyttää DI: tä JavaScriptissä ja etsit kirjastoa, Jo Surikat ehdottaa, että yrität kokeilla hänen kirjastoa.

Di-Ninja

Nicolas Froidure ehdotti vielä yhtä mahtavaa DI-kirjastoa JavaScriptissä.

veitsen sykli

Muokkaa 2:

Jos olet PHP-kehittäjä, älä huoli, sait myös kaikki. Gordon Forsythe suositteli tätä upeaa kirjastoa, jota kaikki haluat kokeilla.

auryn

Kiitos kaikista ystävällisistä sanoista, jotka olen saanut. Jaa artikkeli, jotta yhä useammat ihmiset voivat hyötyä.

Jos olet oppinut edes yhden tai kaksi asiaa, jaa tämä tarina!