Programmēšana

Lielisks atkarības injicēšanas skaidrojums (vadības inversija)

Esmu izlasījis daudz skaidrojumu par atkarības injicēšanu vai DI (agrāk pazīstams kā vadības inversija) un ar to saistīto Holivudas principu ("Nezvaniet mums, mēs jums piezvanīsim."). Viņi visi mēdz būt neskaidri vai nu tāpēc, ka nekavējoties iedziļinās ļoti detalizētos paskaidrojumos, vai arī saista skaidrojumu tieši ar vienu konkrētu tehnoloģiju. Tāds, ka vai nu modelis tiek zaudēts, vai arī tā vienkāršība ir. Šeit ir skaidrākais skaidrojums, ko esmu atradis - nedaudz rediģēts īsuma dēļ (no ļoti labā Pavasara darbībā, 2. izdev., Autors Kreigs Volss):

"Jebkuru nereālu lietojumprogrammu veido divas vai vairākas klases, kas sadarbojas savā starpā, lai veiktu kādu uzņēmējdarbības loģiku. Tradicionāli katrs objekts ir atbildīgs par savu atsauču iegūšanu uz objektiem, ar kuriem viņš sadarbojas (tā atkarības). Lietojot DI, objektiem to radīšanas laikā savas atkarības piešķir kāda ārēja entītija, kas koordinē katru objektu sistēmā. Citiem vārdiem sakot, atkarības tiek ievadītas objektos. "

Man tas šķiet ļoti skaidrs.

Atkarības iesmidzināšana sākotnēji tika dēvēta par vadības inversiju (IoC), jo parastā vadības secība būtu tāda, ka objekts pats atrod objektus, no kuriem tas ir atkarīgs, un pēc tam tos izsauc. Šeit tas tiek mainīts: atkarības tiek nodotas objektam, kad tas tiek izveidots. Tas arī ilustrē Holivudas principu darbā: Neaiciniet atsaukties uz jūsu atkarībām, mēs tos jums iedosim, kad mums tas būs vajadzīgs.

Ja jūs neizmantojat DI, jūs, iespējams, domājat, kāpēc tas ir liels darījums. Tas nodrošina galveno priekšrocību: brīvu savienojumu. Objektus var pievienot un pārbaudīt neatkarīgi no citiem objektiem, jo ​​tie nav atkarīgi ne no kā cita, kā no tā, ko jūs tiem nododat. Izmantojot tradicionālās atkarības, lai pārbaudītu objektu, jums ir jāizveido vide, kurā visas tā atkarības pastāv un ir sasniedzamas, pirms varat to pārbaudīt. Izmantojot DI, ir iespējams pārbaudīt objektu atsevišķi, nododot to objektam, kuru nevēlaties vai jums nav jāizveido. Tāpat tiek atvieglota klases pievienošana projektam, jo ​​klase ir pašpietiekama, tāpēc tas ļauj izvairīties no "lielā matiņa", par kuru bieži attīstās lieli projekti.

DI izaicinājums ir uzrakstīt visu lietojumprogrammu, izmantojot to. Dažas klases nav nekas liels, taču visa lietotne ir daudz grūtāka. Visām lietojumprogrammām jūs bieži vēlaties sistēmu, lai pārvaldītu atkarības un objektu mijiedarbību. DI ietvarus bieži vada XML faili, kas palīdz precizēt, ko kam un kad nodot. Pavasaris ir pilna servisa Java DI sistēma; citi vieglāki DI ietvari ietver NanoContainer un vēl vieglāku PicoContainer.

Lielākajai daļai šo sistēmu ir labas apmācības, kas iesācējiem palīdzēs orientēties.

Šo stāstu "Lielisks atkarības injicēšanas skaidrojums (vadības inversija)" sākotnēji publicēja JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found