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!Wtakimraziesek-
cjęmożnapominąćiprzejśćodrazudopunktu1.1.2.Alejeśliktośczytaksiąż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,dlaczegoteopinienie
prawdziwe.Mity,októrychmowa,to:
¡DIjestodpowiednietylkodlapóźnegowiązania.
¡DIjestodpowiednietylkodlatestówjednostkowych.
¡DIjestwpewnymsensieFabrykąabstrakcyjnąnasterydach.
¡DIwymagajakiegokolwiekKONTENERADI.
Ichociażżadneztychmitównieprawdziwe,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,
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.