Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
16
rozdział1PodstawyWstrzykiwaniazależności:co,jakidlaczego
narozszerzenia,azamkniętenamodyfikacje,jestniemożliwa.Jednakluźnewiązanie
przybliżadotakiegoscenariusza.
Zkażdymkolejnymkrokiemłatwiejjestdodaćnowefunkcjeiwymaganiado
systemu.Adodawanienowychelementówbezruszaniaistniejącychczęścisystemu
oznaczaizolowanieproblemów.Wtensposóbtworzysiękod,któryłatwiejzrozumieć
itestować,copozwalanazarządzaniezłożonościątegosystemu.Wtymwłaśniemoże
pomócluźnewiązanieidlategoteżmożespowodowaćtolepsząutrzymywalnośćkodu.
ZASADAOTWARTE/ZAMKNIĘTE
zostanieprzeznasomówionadokładniewrozdziale4.
Jaknaraziemożnabyłosięzastanawiać,jakbędziewyglądałaimplementacjatych
wzorcówwkodzie.Niewartosiętymprzejmować.Jakjużwspominaliśmyotymwcześ-
niej,podamywieleprzykładówtychwzorcówwtejksiążce.Wdalszejczęścitegoroz-
działupokażemyjednąimplementacjęobydwuwzorców,DekoratoriAdapter.
Łatwączęściąluźnegowiązaniajestprogramowaniedointerfejsuzamiastimple-
mentacji.Pytaniebrzmiskądpochodząinstancje?Wpewnymsensiecałataksiążka
jestnatentemat:jesttogłównepytanie,naktóreDIposzukujeodpowiedzi.
Niemożnautworzyćnowejinstancjiinterfejsuwtensamsposób,wjakitworzysię
nowąinstancjękonkretnegotypu.Takikodsięnieskompiluje:
IMessageWriterwriter=newIMessageWriter();
Programowaniedointerfejsu
Niekompilujesię
Interfejsniezawierażadnychimplementacji,awięctakaoperacjaniejestmożliwa.
Instancja
writer
musizostaćstworzonaprzezużycieinnegomechanizmu.DIrozwią-
zujetenproblem.Przytakimnakreśleniucelu
DI
wydajenamsię,żeczasnanowy
przykład.
1.2.Prostyprzykład:HelloDI!
Wtradycjiniezliczonychksiążekoprogramowaniuspójrzmynaprostąaplikacjękonso-
lową,którawypisujeHello
DI
!naekranie.Wartozauważyć,żepełenkodjestdostępny
wmateriałachdopobraniadotejksiążki(więcejinformacjinapoczątkuksiążki
wsekcji„Konwencjakoduimateriałydopobrania”).
Wtejsekcjipokażemy,jakwyglądatenkod,ipokrótceomówimyniektóreznaj-
ważniejszychkorzyści.Wpozostałychrozdziałachbędziemyjużbardziejszczegółowi.
1.2.1.KodHelloDI!
PewniewiększośćczytelnikówznadobrzeprzykładyHelloworld,któretworzysięza
pomocąpojedynczejlinijkikodu.Myweźmiemycoś,cojestsuperprosteibardziejto
skomplikujemy.Dlaczego?Wkrótcewytłumaczymy,alenajpierwzobaczmy,jakHello
worldwyglądałobyzDI.