Treść książki
Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
6
rozdział1PodstawyWstrzykiwaniazależności:co,jakidlaczego
1.1.1.PowszechnemitynatematDI
Pewnieniejednaosobaspotkałasięz
DI
lubonimsłyszała.Super!Wtakimrazietęsek-
cjęmożnapominąćiprzejśćodrazudopunktu1.1.2.Alejeśliktośczytatęksiążkę,to
prawdopodobnieconajmniejsłyszałgdzieśo
DI
wrozmowie,natknąłsięnaniewbazie
kodu,którąodziedziczył,lubprzeczytałotymwjakichśpostachblogowych.Można
byłoteżzauważyć,żejakakolwiekwzmiankaoDIniesiezasobądużąilośćsilnychopi-
nii.WtejsekcjiprzyjrzymysięczteremnajczęstszymniejasnościomnatematDI,które
pojawiłysięnaprzestrzenilat,orazodpowiemynapytanie,dlaczegoteopinieniesą
prawdziwe.Mity,októrychmowa,to:
¡DIjestodpowiednietylkodlapóźnegowiązania.
¡DIjestodpowiednietylkodlatestówjednostkowych.
¡DIjestwpewnymsensieFabrykąabstrakcyjnąnasterydach.
¡DIwymagajakiegokolwiekKONTENERADI.
Ichociażżadneztychmitówniesąprawdziwe,tojednakprzeważają(wpowszech-
nejopinii).Musimysięichpozbyć,zanimrozpoczniesznaukęnatematDI.
póŹnewiązanie
Wtymkontekściepóźnewiązanieodnosisiędomożliwościzastąpieniaczęściaplikacji
bezrekompilacjinaszegokodu.Aplikacja,którawłączazewnętrznerozszerzenia(na
przykład,VisualStudio),tojedenzprzykładów.Kolejnymjeststandardoweoprogra-
mowanie,którewspieraróżneśrodowiskauruchomieniowe.
Wyobraźmysobie,żemamyaplikację,któradziałanawięcejniżjednymsilnikubazy
danych(naprzykładtaką,którawspierazarównoOracle,jaki
SQL
Server).Wcelu
osiągnięciatejfunkcjiresztaaplikacjikomunikujesięzbaządanychprzezjedeninter-
fejs.Kodźródłowyzapewniaróżneimplementacjetegointerfejsupozwalającenauzy-
skaniedostępuodpowiedniodoOracleiSQLServer.Wtakimwypadkumożemyużyć
opcjikonfiguracjidokontrolowania,któraimplementacjapowinnazostaćużytado
danejinstalacji.
Powszechnebłędneprzekonaniebrzmi,że
DI
jestjedynymodpowiednimwzor-
cemwwypadkutakiegoscenariusza.Tozrozumiałe,ponieważDIpozwalanaobsługę
takiegoscenariusza.Jednakbłędnejestuważanietegozwiązkuzasymetryczny.Fakt,
iżDIpozwalanapóźnewiązanienieoznacza,żejestonjedynymodpowiednimwzor-
cemtakichscenariuszy.Jakukazanotonarys.1.1,późnewiązaniejestjednymzwielu
aspektówDI.
JeśliktośuważałdotejporyDIzawzorzecodpowiednitylkodlascenariuszyzpóź-
nymwiązaniem,tomusisiętegooduczyć.
DI
pozwalanaowielewięcejniż(tylko)uru-
chamianiepóźnegowiązania.
testowaniejednostkowe
Niektórzyuważają
DI
zajedyniesłusznywewspieraniutestowaniajednostkowego.
Toteżnieprawda,mimoże
DI
tozdecydowanieważnaczęśćtworzeniatestowania.