Ātrs ievads atkarības injekcijai: kas tas ir un kad to lietot

Ievads

Programmatūras inženierijā atkarības ievadīšana ir metode, ar kuras palīdzību viens objekts (vai statiskā metode) nodrošina cita objekta atkarības. Atkarība ir objekts, kuru var izmantot (pakalpojums).

Tā ir Vikipēdijas definīcija, bet tomēr, bet to nav īpaši viegli saprast. Tāpēc sapratīsim to labāk.

Pirms saprotam, ko tas nozīmē programmēšanā, vispirms apskatīsim, ko tas nozīmē kopumā, jo tas palīdzēs mums labāk izprast šo jēdzienu.

Atkarība vai atkarība nozīmē paļaušanos uz kaut ko, lai saņemtu atbalstu. Tāpat kā tad, ja es saku, ka pārāk daudz paļaujamies uz mobilajiem tālruņiem, nekā tas nozīmē, ka esam no tiem atkarīgi.

Tātad, pirms nokļūt atkarības injekcijās , vispirms sapratīsim, ko nozīmē atkarība programmēšanā.

Kad A klase izmanto kādu B klases funkcionalitāti, tā teica, ka A klase ir atkarīga no B klases.

Java, pirms mēs varam izmantot citu klašu metodes, mums vispirms ir jāizveido šīs klases objekts (ti, A klasei jāizveido B klases eksemplārs).

Tātad objekta izveidošanas uzdevuma nodošanu citam un tieši atkarības izmantošanu sauc par atkarības injekciju.

Kāpēc man vajadzētu izmantot atkarības injekciju?

Pieņemsim, ka mums ir automašīnu klase, kurā ir dažādi priekšmeti, piemēram, riteņi, motors utt.

Šeit automašīnu klase ir atbildīga par visu atkarības objektu izveidošanu. Ko darīt, ja mēs nolemjam nākotnē novākt MRFWheels un vēlamies izmantot Yokohama Wheels?

Mums būs jāatjauno automašīnas objekts ar jaunu atkarību no Jokohamas. Bet, izmantojot atkarības iesmidzināšanu (DI), mēs varam mainīt riteņus izpildes laikā (jo atkarības var injicēt nevis izpildes laikā, bet izpildes laikā).

Jūs varat domāt par DI kā starpnieku mūsu kodeksā, kurš veic visu darbu, lai izveidotu vēlamo riteņu objektu un nodrošinātu to automašīnu klasei.

Tas padara mūsu automašīnu klasi neatkarīgu no riteņu, akumulatoru utt. Objektu radīšanas.

Būtībā ir trīs atkarības injekcijas veidi:

  1. konstruktora iesmidzināšana: atkarības nodrošina klases konstruktors.
  2. setera injekcija: klients atklāj setera metodi, kuru injicētājs izmanto, lai injicētu atkarību.
  3. saskarnes injekcija: atkarība nodrošina inžektora metodi, kas injicēs atkarību ikvienam klientam, kas tam ir nodots. Klientiem jāievieš saskarne, kas atklāj iestatītāja metodi, kas pieņem atkarību.

Tāpēc tagad atkarības injekcijas pienākums ir:

  1. Izveidojiet objektus
  2. Ziniet, kurām klasēm nepieciešami šie objekti
  3. Un sagādājiet viņiem visus šos objektus

Ja objektos notiek kādas izmaiņas, tad DI to izskata, un tam nevajadzētu attiekties uz klasi, kas izmanto šos objektus. Tādā veidā, ja objekti mainīsies nākotnē, tā DI pienākums ir nodrošināt klasei atbilstošos objektus.

Kontroles inversija - DI koncepcija

Tas nosaka, ka klasei nevajadzētu statiski konfigurēt savas atkarības, bet tā jākonfigurē kādai citai klasei no ārpuses.

Tas ir piektais SOLID princips -pieci tēvoča Boba objektorientētās programmēšanas un dizaina pamatprincipi - kas nosaka, ka klasei ir jābūt atkarīgai no abstrakcijas, nevis no konkretizācijām (vienkāršā izteiksmē, kodēti).

Saskaņā ar principiem klasei jākoncentrējas uz pienākumu izpildi, nevis uz objektu radīšanu, kas tai nepieciešami šo pienākumu izpildei. Un šeit tiek izmantota atkarības injekcija : tā nodrošina klasi ar nepieciešamajiem objektiem.

Piezīme: Ja vēlaties uzzināt par tēvo Boba SOLID principiem, varat doties uz šo saiti.

DI izmantošanas priekšrocības

  1. Palīdz vienību testēšanā.
  2. Katla plāksnes kods ir samazināts, jo atkarību inicializēšanu veic inžektora komponents.
  3. Lietotnes paplašināšana kļūst vienkāršāka.
  4. Palīdz iespējot vaļīgu savienošanu, kas ir svarīgi lietojumprogrammu programmēšanā.

DI trūkumi

  1. Mācīties ir mazliet sarežģīti, un pārmērīga lietošana var izraisīt pārvaldības un citas problēmas.
  2. Daudzas kompilēšanas laika kļūdas tiek virzītas uz izpildlaiku.
  3. Atkarības iesmidzināšanas sistēmas tiek realizētas ar refleksiju vai dinamisku programmēšanu. Tas var kavēt IDE automatizācijas izmantošanu, piemēram, “atrast atsauces”, “rādīt zvanu hierarhiju” un drošu atjaunošanu.

Varat patstāvīgi ieviest atkarības injekciju (Pure Vanilla) vai izmantot trešo pušu bibliotēkas vai ietvarus.

Bibliotēkas un ietvari, kas ievieš DI

  • Pavasaris (Java)
  • Google Guice (Java)
  • Duncis (Java un Android)
  • Vindzoras pils (.NET)
  • Vienotība (.NET)

Lai uzzinātu vairāk par atkarības injicēšanu, varat apskatīt šādus resursus:

Java atkarības injicēšana - DI dizaina modeļa apmācības piemērs - JournalDev

Atkarības injekcijas izmantošana Java valodā - ievads - apmācība - Vogella

Kontroles konteineru inversija un atkarības iesmidzināšanas modelis - Martin Fowler

Ceru, ka tas palīdzēs!

Ja jums patika raksts un vēlaties izlasīt vairāk pārsteidzošu rakstu, tad sekojiet man šeit (Bhavya Karia) un parādiet savu atbalstu, jo tas mani motivē rakstīt vairāk.

Ja jums ir kādi jautājumi vai atsauksmes par mani, sazināsimies ar LinkedIn, Twitter, Facebook.

1. labojums:

Pateicoties Sergejam Ufokoderam, šis raksts tagad ir pārveidots krievu valodā. Mani krievu draugi un visi, kas var lasīt krievu valodu, patiešām to lasīt.

Saite uz rakstu

Turklāt, ja vēlaties lietot DI JavaScript valodā un meklējat bibliotēku, Jo Surikat iesaka jums izmēģināt viņa bibliotēku.

Di-Ninja

Nicolas Froidure ieteica vēl vienu lielisku DI bibliotēku JavaScript.

knifecycle

2. labojums:

Ja jūs esat PHP izstrādātājs, tad neuztraucieties, jūs arī visus aptvērāt. Gordons Forsits ieteica šo apbrīnojamo bibliotēku, kuru jūs visi varētu vēlēties izmēģināt.

auryn

Paldies par visiem laipnajiem vārdiem, ko esmu saņēmis. Dalieties ar rakstu, lai arvien vairāk cilvēku varētu gūt labumu.

Ja uzzinājāt kaut vai divas lietas, lūdzu, dalieties ar šo stāstu!