..


Спонсоред Линкс

МОК и ДИ (Инверзија контроле и зависности Ињецтион)

Инверзија контроле (МОК) је типичан карактеристика оквира, који се креће ток контроле захтев самог оквира.

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

Ова врста понашања се зове МОК, јер контрола покреце програмер оквира.

Када је јасно шта МОК, видимо како се користи у пролеће.
Све апликације се састоји од објеката који до унапред циљ мора да сарађује са другима, и неизбежно формирају зависности. Нормално се ове зависности решавају код који је погодан за конфигурацију (обично произвођача). Претпоставимо да имамо за спровођење класе за управљање видео клубу:






 ит.мрвебмастер пакета;









 увоз јава.утил.АрраиЛист;







 увоз јава.утил.Лист;









 {Публиц цласс ВидеоМанагер





  



 Приватна ДвдСервице двдСервице;





  



 јавни ВидеоМанагер () {



    



 супер ();



    



 / **



     



 * Конфигурација и зависност резолуцији



     



 * /



    



 тхис.двдСервице ДвдСервицеИмпл = нев ();



  



 }





  



 <Двд> ГетАвалаиблеДвдЛист јавни листа () {



    



 / **



     



 * Преузми листу ДВД-



     



 * /



    



 Листа <Двд> двдЛист двдСервице.гетДвдЛист = ();





    



 / **



     



 * Петља кроз листу ДВД наћи

 

     



 * Они доступна



     



 * /



    



 Лист = нев АрраиЛист <Двд> аваилабеДвдЛист <Двд> ();





    



 за (ДВД ДВД: двдЛист) {



      



 ако је (двд.исДиспонибиле ()) {



        



 аваилабеДвдЛист.адд (ЦД);



      



 }



    



 }





    



 аваилабеДвдЛист повратак;



  



 }

	





 }



У овом примеру класа ВидеоМанагер има задатак да опоравља листу не-изнајмљених ДВД-у. Листа је преузета преко услуге (ДвдСервице) која преузима листу свих ДВД-а, и бициклистичке на листи су ДВД-доступне. Класа ВидеоМанагер, дакле, има зависност од објекта ДвдСервице, који је решен у конструктор.

Diagramma Dipendenze

Ако нисмо користили пролеће би требало да бринете о решавању дипендеза ВидеоМанагер у класи конструктора, јер зависност бити решено до пролећа.
У пролеће, дакле, МОК се користи да се инвертује контролу над конфигурацију зависности. Из тог разлога је сковао Мартин Фовлер, у свом чувеном чланку , термин Депендеци убризгавања (ДИ), која се понекад користи као синоним погрешно МОК ИД.
Основни концепт ДИ да имају посебан објекат да резолуција зависности и иницијализацију.

Следећи Асемблер класе, има задатак да покрене ДвдСервице класе:

Diagramma Assembler

Постоје три врсте Депендеци ињекција:

  • Интерфејс убризгавање
  • Сетер убризгавање
  • Конструктор Убризгавање
У пролеће, као што ћемо касније видети, су имплементирани само конструктор и сетер ињекција, али је могуће иницијализовати и стварање објеката кроз објекат фабрике и фабрике метода.

Пролеће Јава Водич
Е-учење
Линук (курс) Линук (курс)
Комплетан водич за опен-соурце систем. Од 49 €.
ПХП (курс) ПХП (курс)
Цео курс за креирање динамичких веб сајтова. Од 49 €.
Руби и Руби он Раилс (курс) Руби и Руби он Раилс (курс)
Израду софтвера и веб апликација са рубином и РОР. Од 39 €.
Спонсоред Линкс