Кратки увод у убризгавање зависности: шта је то и када га користити

Увод

У софтверском инжењерству, убризгавање зависности је техника којом један објекат (или статичка метода) даје зависности другог објекта. Зависност је објекат који се може користити (услуга).

То је дефиниција Википедије, али ипак, али није нарочито лако разумјети. Па хајде да то боље разумемо.

Пре него што схватимо шта то значи у програмирању, хајде да прво видимо шта то уопште значи, јер ће нам помоћи да боље разумемо концепт.

Зависност или зависност значи ослањање на нешто за подршку. Као ако кажем да се превише ослањамо на мобилне телефоне, него што значи да смо зависни од њих.

Дакле, пре него што пређемо на ињекције зависности , прво да схватимо шта зависност у програмирању значи.

Када класа А користи неку функционалност класе Б, тада се каже да класа А има зависност од класе Б.

У Јави, пре него што можемо да користимо методе других класа, прво треба да креирамо објекат те класе (тј. Класа А треба да креира инстанцу класе Б).

Дакле, пренос задатка стварања објекта на неког другог и директно коришћење зависности назива се убризгавањем зависности.

Зашто да користим ињекцију зависности?

Рецимо да имамо класу аутомобила која садржи разне предмете као што су точкови, мотор итд.

Овде је класа аутомобила одговорна за стварање свих објеката зависности. Шта ако сада одлучимо да одустанемо од МРФВхеелс- а и желимо да користимо Иокохама Вхеелс?

Морамо да створимо аутомобилски објекат у новој зависности од Јокохаме. Али када користимо убризгавање зависности (ДИ), можемо променити точкиће за време извођења (јер се зависности могу убризгати за време извођења, а не за време компајлирања).

Можете да замислите ДИ као посредника у нашем коду који ради сав посао на стварању жељеног предмета точкова и пружању га класи аутомобила.

Чини нашу класу аутомобила неовисном од стварања предмета точкова, батерија итд.

У основи постоје три врсте убризгавања зависности:

  1. убризгавање конструктора: зависности се пружају преко конструктора класе.
  2. убризгавање сетера: клијент излаже методу постављања коју ињектор користи за убризгавање зависности.
  3. убризгавање интерфејса: зависност пружа ињекторски метод који ће убризгати зависност у било који клијент који му је прослеђен. Клијенти морају имплементирати интерфејс који излаже методу постављача која прихвата зависност.

Дакле, сада је одговорност ињекције зависности да:

  1. Направите предмете
  2. Знајте за које класе су потребни ти објекти
  3. И обезбедите им све те предмете

Ако постоји било каква промена у објектима, онда ДИ то проучава и то не би требало да се тиче класе која користи те објекте. На овај начин, ако се објекти промене у будућности, тада је одговорност његовог ДИ да обезбеди одговарајуће објекте класи.

Инверзија контроле - концепт који стоји иза ДИ

Ово наводи да класа не би требала статички да конфигурише своје зависности, већ да је треба да конфигурише нека друга класа споља.

То је пети принцип ЧВРСТОГ -пет основних принципа објектно оријентисаног програмирања и дизајна од стрица Боба - који каже да класа треба да зависи од апстракције, а не од конкреција (једноставним терминима, тврдо кодираних).

Према принципима, класа треба да се концентрише на испуњавање својих одговорности, а не на стварање предмета који су јој потребни да би испунила те одговорности. И ту долази до изражаја убризгавање зависности : пружа класи потребне тражене објекте.

Напомена: Ако желите да научите о ЧВРСТИМ принципима стрица Боба, можете да одете на ову везу.

Предности употребе ДИ

  1. Помаже у јединственом тестирању.
  2. Код плоче котла је смањен, јер иницијализацију зависности врши компонента млазнице.
  3. Проширење апликације постаје лакше.
  4. Помаже у омогућавању лабавог спајања, што је важно у програмирању апликација.

Мане ДИ

  1. Помало је сложено за учење, а ако се прекомерно користи може довести до проблема управљања и других проблема.
  2. Много грешака у времену компајлирања гура се у време извођења.
  3. Оквири убризгавања зависности примењују се помоћу рефлексије или динамичког програмирања. Ово може ометати употребу ИДЕ аутоматизације, као што су „пронађи референце“, „прикажи хијерархију позива“ и сигурно рефакторирање.

Можете сами применити ињекцију зависности (Пуре Ванилла) или користити библиотеке или оквире независних произвођача.

Библиотеке и оквири који примењују ДИ

  • Пролеће (Јава)
  • Гоогле Гуице (Јава)
  • Даггер (Јава и Андроид)
  • Цастле Виндсор (.НЕТ)
  • Јединство (.НЕТ)

Да бисте сазнали више о убризгавању зависности, можете погледати следеће ресурсе:

Ињекција зависности Јава - Водич за пример узорка дизајна - ЈоурналДев

Коришћење убризгавања зависности у Јави - Увод - Водич - Вогелла

Инверзија контролних контејнера и образац убризгавања зависности - Мартин Фовлер

Надам се да помаже!

Ако вам се свидео чланак и желите да прочитате још невероватних чланака, следите ме овде (Бхавиа Кариа) и покажите своју подршку јер ме мотивише да напишем више.

Ако имате било каквих питања или повратних информација за мене, хајде да се повежемо на ЛинкедИн, Твиттер, Фацебоок.

Измена 1:

Захваљујући Сергеју Уфоцодер-у, овај чланак је претворен у руски језик. Моји руски пријатељи и који сви знају читати руски језик, читају га.

Линк до чланка

Такође, ако желите да примените ДИ у ЈаваСцрипт и тражите библиотеку, Јо Сурикат предлаже да покушате са његовом библиотеком.

Ди-Ниња

Још једну сјајну ДИ библиотеку у ЈаваСцрипт-у предложио је Ницолас Фроидуре.

книфецицле

Едит 2:

Ако сте ПХП програмер, не брините, побринули сте се и за све. Гордон Форситхе је препоручио ову невероватну библиотеку коју бисте сви желели да испробате.

аурин

Хвала на свим лепим речима које сам добио. Делите чланак тако да све више људи може имати користи.

Ако сте научили макар две ствари, поделите ову причу!