Uvod
U softverskom inženjerstvu ubrizgavanje ovisnosti je tehnika kojom jedan objekt (ili statička metoda) osigurava ovisnosti drugog objekta. Ovisnost je objekt koji se može koristiti (usluga).To je definicija Wikipedije, ali svejedno, ali nije osobito lako razumjeti. Pa shvatimo to bolje.
Prije razumijevanja što to znači u programiranju, pogledajmo prvo što to znači općenito jer će nam pomoći da bolje razumijemo koncept.
Ovisnost ili ovisnost znači oslanjanje na nešto za podršku. Kao ako kažem da se previše oslanjamo na mobilne telefone, nego što znači da smo ovisni o njima.
Dakle, prije nego što prijeđemo na injekcije ovisnosti , prvo shvatimo što ovisnost u programiranju znači.
Kada klasa A koristi neku funkcionalnost klase B, tada se kaže da klasa A ovisi o klasi B.

U Javi, prije nego što možemo koristiti metode drugih klasa, prvo moramo stvoriti objekt te klase (tj. Klasa A mora stvoriti instancu klase B).
Dakle, prijenos zadatka stvaranja objekta na nekoga drugog i izravna upotreba ovisnosti naziva se ubrizgavanjem ovisnosti.

Zašto bih trebao koristiti injekciju ovisnosti?
Recimo da imamo klasu automobila koja sadrži razne predmete poput kotača, motora itd.
Ovdje je klasa automobila odgovorna za stvaranje svih objekata ovisnosti. Sada, što ako u budućnosti odlučimo napustiti MRFWheels i želimo koristiti Yokohama Wheels?
Morat ćemo ponovno stvoriti automobilski objekt s novom ovisnošću o Yokohami. Ali kada koristimo ubrizgavanje ovisnosti (DI), možemo promijeniti kotačiće za vrijeme izvođenja (jer se ovisnosti mogu ubrizgati za vrijeme izvođenja, a ne za vrijeme sastavljanja).
DI možete smatrati posrednikom u našem kodu koji obavlja sav posao stvaranja željenog predmeta kotača i pružanja ga klasi automobila.
Čini našu klasu automobila neovisnom od stvaranja predmeta kotača, baterija itd.
U osnovi postoje tri vrste ubrizgavanja ovisnosti:
- ubrizgavanje konstruktora: ovisnosti se pružaju preko konstruktora klase.
- ubrizgavanje postavljača: klijent izlaže metodu postavljanja koju injektor koristi za ubrizgavanje ovisnosti.
- ubrizgavanje sučelja: ovisnost pruža injektorsku metodu koja će ubrizgati ovisnost u bilo kojeg klijenta koji mu je proslijeđen. Klijenti moraju implementirati sučelje koje izlaže metodu postavljača koja prihvaća ovisnost.
Dakle, sada je odgovornost injekcije ovisnosti:
- Stvorite objekte
- Znajte za koje razrede su potrebni ti objekti
- I pružiti im sve te predmete
Ako postoji bilo kakva promjena na objektima, tada DI to proučava i to se ne bi trebalo ticati klase koja koristi te objekte. Na taj se način, ako se objekti promijene u budućnosti, tada je njegova DI odgovornost pružiti odgovarajuće objekte klasi.
Inverzija upravljanja - koncept koji stoji iza DI
To navodi da klasa ne bi trebala statički konfigurirati svoje ovisnosti, već bi je trebala konfigurirati neka druga klasa izvana.
To je peto načelo ČVRSTOG -pet osnovnih principa objektno orijentiranog programiranja i dizajna strica Boba - koji kaže da klasa treba ovisiti o apstrakciji, a ne o konkrecijama (jednostavnim riječima, tvrdo kodirana).
Prema načelima, razred bi se trebao koncentrirati na ispunjavanje svojih odgovornosti, a ne na stvaranje predmeta potrebnih za ispunjavanje tih odgovornosti. I tu dolazi do izražaja ubrizgavanje ovisnosti : pruža klasi potrebne tražene objekte.
Napomena: Ako želite naučiti o ČVRSTIM principima strica Boba, možete otići na ovu vezu.
Prednosti upotrebe DI
- Pomaže u jedinstvenom testiranju.
- Kôd ploče kotla smanjen je, jer inicijalizaciju ovisnosti vrši komponenta mlaznice.
- Proširenje aplikacije postaje lakše.
- Pomaže u omogućavanju labavog spajanja, što je važno u programiranju aplikacija.
Mane DI
- Pomalo je složeno učiti, a ako se pretjerano koristi, to može dovesti do problema s upravljanjem i drugih problema.
- Mnoge pogreške vremena kompajliranja potisnute su u vrijeme izvođenja.
- Okviri ubrizgavanja ovisnosti provode se refleksijom ili dinamičkim programiranjem. To može ometati upotrebu IDE automatizacije, kao što su "pronađi reference", "prikaži hijerarhiju poziva" i sigurno refaktoriranje.
Možete samostalno implementirati ubrizgavanje ovisnosti (Pure Vanilla) ili koristiti biblioteke ili okvire treće strane.
Knjižnice i okviri koji implementiraju DI
- Proljeće (Java)
- Google Guice (Java)
- Bodež (Java i Android)
- Castle Windsor (.NET)
- Jedinstvo (.NET)
Da biste saznali više o ubrizgavanju ovisnosti, možete pogledati dolje navedene resurse:
Ubrizgavanje ovisnosti o Java - Vodič za primjer uzorka dizajna - JournalDev
Korištenje ubrizgavanja ovisnosti u Javi - Uvod - Vodič - Vogella
Inverzija upravljačkih spremnika i obrazac ubrizgavanja ovisnosti - Martin Fowler
Nadam se da pomaže!
Ako vam se svidio članak i želite pročitati još nevjerojatnih članaka, slijedite me ovdje (Bhavya Karia) i pokažite svoju podršku jer me motivira da napišem više.
Ako imate bilo kakvih pitanja ili povratnih informacija za mene, povezimo se na LinkedIn, Twitter, Facebook.
Uredi 1:
Zahvaljujući Sergeyu Ufocoderu, ovaj je članak pretvoren u ruski jezik. Moji ruski prijatelji i koji svi znaju čitati ruski jezik, čitaju ga.
Link na članak
Također, ako želite primijeniti DI u JavaScript i tražite knjižnicu, Jo Surikat predlaže da pokušate s njegovom knjižnicom.
Di-Ninja
Još jednu sjajnu DI biblioteku u JavaScriptu predložio je Nicolas Froidure.
noževi
Uredi 2:
Ako ste PHP programer, ne brinite, pobrinuli ste se i za sve. Gordon Forsythe preporučio je ovu nevjerojatnu knjižnicu koju biste svi željeli isprobati.
auryn
Hvala na svim lijepim riječima koje sam primio. Podijelite članak kako bi sve više i više ljudi moglo imati koristi.
Ako ste naučili nešto ili dvije, podijelite ovu priču!