Wątek przeniesiony 2014-04-02 15:49 z Newbie przez Shalom.

IoC, a DI - czym to sie rozni?

2

Witam,
Zastanawia mnie czym rozni sie IoC od DI. WIem, ze DI to pojecie wezsze.. ale bede wdzieczny za wytlumaczenie tej roznicy, spotykam te terminy dosc czesto i traktuje je troche jako synonimy. Chcialbym jednak zrozumiec co naprawde znacza i po co sie to robi.

Rozumiem, ze efektem jest, ze nie uzywa sie slowa kluczowego new. Ponadto z reguly obiekt wrzucany nie jest na etapie kompilacji, a na etapie uruchomienia. Ale to w pelni nie wyjasnia.

Pozdrawiam,

20

IoC to jest abstrakcyjna koncepcja która mówi tylko tyle że obiekty nie powinny zajmować się pozyskiwaniem potrzebnych zależności, tylko te zależności w jakiś sposób powinny im zostać dostarczone. Klasyczne "sterowanie" w programowaniu zakładało że twój obiekt musiał sobie skądś wysupłać zależności, np. z JNDI, ServiceLocatora, Singletonów itd. IoC zakłada że sterowanie jest odwrócone, czyli że pobieranie zależności jest wyciągnięte "poza obiekt".
DI to jest jedna z możliwych implementacji wzorca IoC. W praktyce nie występują właściwie inne realizacje tego wzorca, stąd tez częste stosowanie ich jako synonimów. Warto mieć jednak na uwadze że DI to jest tylko pewna praktyczna realizacja IoC.
Istnieje wiele różnych mechanizmów pozwalających na Dependency Injection. Zwykle mianem tym określa sie "konenery IoC" czyli takie magiczne zabawki które na podstawie xmla / adnotacji / metainformacji dokonują instancjonowania obiektów i dostarczania zależności. Ale kontenery to nie wszystko ;) Dużo łatwiejszą metodą na wstrzykiwanie zależności to zwykłe użycie parametrów konstruktora i setterów.

0

Dzięki, teraz rozumiem więcej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1