Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
rozdział1PodstawyWstrzykiwaniazależności:co,jakidlaczego
WSTRZYKIWANIEKONSTRUKTOREM
topreferowanametodadziałania,zbadamyteżkilka
dodatkowychopcjiwrozdziale4.
1.3.Cowstrzykiwać,aczegoniewstrzykiwać
Wewcześniejszejsekcjiopisaliśmykwestie,któremogąmotywowaćdoużycia
DI
wpierw-
szejkolejności.Jeśliktośjestprzekonanycodokorzyściluźnegopowiązania,moż-
liwe,żebędziechciałrobićwszystkozjegowykorzystaniem.Generalniejesttodobry
pomysł.Kiedytrzebazdecydować,jakzbudowaćmoduły,luźnepowiązaniepotwier-
dzasiębyćnajbardziejprzydatnym.AlenietrzebaskupiaćsięnawyciąganiuABSTRAK-
CJI
zewszystkichelementówisprawiać,żebyimplementacjebyłyzastępowalne.Wtej
sekcjipodamyniektóreznarzędzidecyzyjnych,któremogąpomóczadecydować,
jakmodelowaćswojeZALEŻNOŚCI.
.
NETBCL
składasięzwielupodzespołów.Zakażdymrazem,gdypisanyjestkod
zwykorzystaniemtypuzBCL,dodawanajestjednazależnośćdomodułu.Wpoprzed-
niejsekcjiomówiliśmy,jakluźnepowiązaniejestważneijakprogramowaniedointer-
fejsujestkluczowe.Czyoznaczato,żeniemożnaodnosićsiędożadnychpodzespołów
BCLiużywaćichtypówbezpośredniowaplikacji?Co,jeśliktośchciałbyużyćjakiegoś
XmlWriter
,któryjestzdefiniowanywpodzespoleSystem.Xml?
Nietrzebatraktowaćwszystkich
ZALEŻNOŚCI
wtensamsposób.Wieletypóww
BCL
możebyćużytychbezzagrożeniadlastopniapowiązaniaaplikacjialeuwaga,
niewszystkie,tylkowieleznich.Ważnejest,bywiedzieć,jakrozróżnićtypy,które
niestanowiązagrożenie,odtypów,któremogąścieśnićstopieńpowiązaniaaplikacji.
Wartoskupićsięgłównienatychdrugich.
Wtrakciepoznawania
DI
przydatnemożesięokazaćkategoryzowanie
ZALEŻNOŚCI
naSTABILNEZALEŻNOŚCIiNIESTABILNEZALEŻNOŚCI.
15
SZWY
Wszędzie,gdziektośdecydujesięprogramowaćdo
abstrakcji
zamiastkonkretnegotypu,
wprowadzasię
szew
doaplikacji.
szew
tomiejsce,gdzieaplikacjajestskładanazeswo-
ichwszystkichelementówwpodobnysposób,jakubraniejestzszywanenaszwach
15
.
Jesttotakżemiejsce,gdziemożnarozłożyćaplikacjęnaczynniki(pierwsze)ipracować
naoddzielnychizolowanychmodułach.
PrzykładHello
di
!zbudowanyprzeznaswsekcji1.2zawiera
szew
między
Salutation
a
ConsoleMessageWriter
(poniżejzilustrowane).Klasa
Salutation
niezależybezpośred-
nioodklasyConsoleMessageWriter,araczejużywainterfejsuIMessageWrite
r
dopisa-
niawiadomości.MożnarozłożyćnaczęściaplikacjęnatymSZWIEizłożyćponownie
zinnymwriteremwiadomości.
15M.C.Feathers,op.cit.,29–44.