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

Kuva Rawpixel on Unsplash

esittely

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

Se on Wikipedian määritelmä, mutta silti, mutta se ei ole erityisen helppoa ymmärtää. Ymmärrämme se siis paremmin.

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

Riippuvuus tai riippuvainen tarkoittaa luottamista johonkin tukeen. Kuten jos sanon, että luotamme liian paljon matkapuhelimiin kuin se tarkoittaa, että olemme riippuvaisia ​​heistä.

Joten ennen kuin pääset riippuvuusinjektioihin, ymmärrämme ensin, mitä riippuvuus ohjelmoinnissa tarkoittaa.

Kun luokka A käyttää luokan B joitain toimintoja, luokan A riippuvuus on luokan B.

Näytetään luokkien väliset riippuvuudet

Java-ohjelmassa, ennen kuin voimme käyttää muiden luokkien menetelmiä, meidän on ensin luotava kyseisen luokan objekti (ts. Luokan A on luotava luokan B esiintymä).

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

Entä jos koodi voisi puhua?

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

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

Autoluokka on vastuussa kaikkien riippuvuusobjektien luomisesta. Entä jos päätämme tulevaisuudessa ojittaa MRFWheels-pyörät ja haluamme käyttää Yokohama-pyöriä?

Auton esine on luotava uudelleen uuden Yokohama-riippuvuuden avulla. Mutta kun käytetään riippuvuusinjektiota (DI), voimme vaihtaa pyöriä ajon aikana (koska riippuvuudet voidaan injektoida ajonaikaisesti pikemminkin kuin kääntämisaikaan).

Voit ajatella DI: tä välittäjänä koodissamme, joka tekee kaiken työn luodakseen halutut pyörät-objektin ja toimittaa sen autoluokalle.

Se tekee autoluokkamme riippumattomaksi pyörien, akkujen jne. Esineiden luomisesta.

Riippuvuusinjektioita on periaatteessa kolme:

  1. rakennusinjektio: riippuvuudet saadaan aikaan luokkarakentajan kautta.
  2. setter-injektio: asiakas paljastaa setter-menetelmän, jota injektori käyttää riippuvuuden injektoimiseen.
  3. rajapintainjektio: riippuvuus tarjoaa injektorimenetelmän, joka injektoi riippuvuuden jokaiselle sille siirretylle asiakkaalle. Asiakkaiden on toteutettava käyttöliittymä, joka paljastaa asetukseen perustuvan menetelmän, joka hyväksyy riippuvuuden.

Joten nyt sen riippuvuusinjektion vastuu on:

  1. Luo objektit
  2. Tiedä, mitkä luokat vaativat näitä esineitä
  3. Ja tarjoa heille kaikki nuo esineet

Jos objekteissa tapahtuu muutoksia, DI tutkii sitä ja sen ei pitäisi koskea luokkaa, joka käyttää näitä objekteja. Jos objektit muuttuvat tulevaisuudessa, DI: n vastuulla on tarjota luokalle sopivat esineet.

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

Tämä väittää, että luokan ei pitäisi määrittää riippuvuuksiaan staattisesti, vaan jonkin muun luokan on määritettävä ulkopuolelta.

Se on S.O.L.I.D: n viides periaate - Bob-setän olio-ohjelmoinnin ja suunnittelun viisi perusperiaatetta -, jonka mukaan luokan tulisi olla riippuvainen abstraktiosta eikä konkreetuksista (yksinkertaisesti sanottuna kova koodattu).

Periaatteiden mukaan luokan tulisi keskittyä vastaamaan tehtäviään eikä luomaan esineitä, joita se tarvitsee näiden velvollisuuksien täyttämiseksi. Ja siellä tulee olemaan riippuvuusinjektio: se tarjoaa luokalle tarvittavat esineet.

Huomaa: Jos haluat oppia setä Bobin SOLID-periaatteista, voit siirtyä tälle linkille.

DI: n käytön edut

  1. Auttaa yksikkötestauksessa.
  2. Kattilanlevyn koodi pienenee, koska riippuvuudet alustaa injektorikomponentti.
  3. Sovelluksen pidentäminen on helpompaa.
  4. Auttaa mahdollistamaan löysät kytkennät, mikä on tärkeää sovellusohjelmoinnissa.

DI: n haitat

  1. Oppiminen on vähän monimutkaista, ja jos sitä käytetään liikaa, se voi johtaa hallintaan ja muihin ongelmiin.
  2. Monet käännösaikavirheet työnnetään ajoaikaan.
  3. Riippuvuusinjektiokehykset toteutetaan heijastus- tai dynaamisella ohjelmoinnilla. Tämä voi estää IDE-automaation käyttöä, kuten “etsi viitteitä”, “näytä puheluhierarkia” ja turvallinen uudelleenkehittäminen.

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

Kirjastot ja kehykset, jotka toteuttavat DI: n

  • Kevät (Java)
  • Google Guice (Java)
  • Dagger (Java ja Android)
  • Windsorin linna (.NET)
  • Yhtenäisyys (NET)

Lisätietoja riippuvuuden lisäämisestä saat tarkistamalla alla olevat resurssit:

Java-riippuvuusinjektio - DI-suunnittelumallin esimerkkiopetus - JournalDev

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

Kontrollisäiliöiden kääntö ja riippuvuusinjektiokuvio - Martin Fowler

Toivottavasti se auttaa!

Jos pidit artikkelista ja haluat lukea enemmän uskomattomia 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ä ja Facebookissa.

Muokkaa 1:

Sergey Ufocoderin ansiosta tämä artikkeli on nyt muutettu venäjän kieleksi. Venäläiset ystäväni ja jotka kaikki osaavat lukea venäjän kieltä, antavat sen lukea.

Linkki artikkeliin

Jos haluat käyttää DI: tä JavaScript-ohjelmassa ja etsit kirjastoa, Jo Surikat ehdottaa, että yrität hänen kirjastoaan.

Di-Ninja

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

knifecycle

Muokkaa 2:

Jos olet PHP-kehittäjä, niin älä huolestu, sait kaikki sinut kattamaan. Gordon Forsythe suositteli tätä hämmästyttävää kirjastoa, jota haluat ehkä kokeilla.

Auryn

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

Jos olet oppinut jopa yhden tai kaksi asiaa, taputtele käsiäsi many niin monta kertaa (50 ) kuin pystyt osoittamaan tukeasi!