Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Prostyprzykład:HelloDI!
19
Mogłybysiępojawićtumetodyskładowe,alewtymprostymprzykładziepotrzebna
jestjedyniemetoda
Write
.Interfejsjestimplementowanyprzezklasę
ConsoleMessa-
geWriter
,któraprzekazywanajestprzezmetodę
Main
doklasy
Salutation
:
publicclassConsoleMessageWriter:IMessageWriter
{
publicvoidWrite(stringmessage)
{
Console.WriteLine(message);
}
}
Klasa
ConsoleMessageWriter
implementuje
IMessageWriter
przezopakowa-
nieklasyConsolezBibliotekiklaspodstawowych.NET(oryg..NETBaseClassLibrary,
BCL).JesttoprostaaplikacjawzorcaprojektowegoAdapter,októrejmówiliśmywsek-
cji1.1.2.
1.2.2.Korzyści(płynące)zDI
Możnazastanawiaćsięnadkorzyściązastąpieniapojedynczejlinijkikodudwomakla-
samiijednyminterfejsem,którawefekciedajerazem28linijek.Takisamproblem
możnałatworozwiązaćwnastępującysposób:
privatestaticvoidMain()
{
Console.WriteLine("HelloDI!");
}
DI
możewydawaćsięprzesadą,alepłyniezniegokilkakorzyści,którepojawiają
sięprzyużyciugo/wykorzystaniutegowzorca.Jaktosiędzieje,żetenprzykładjest
lepszyniżstandardowyjednolinijkowykod,któregonormalnieużywasiędoimple-
mentacjiHelloWorldwC#?Tutaj
DI
dokładanarzuto2800%,alezracjizwiększenia
złożonościkoduzjednejlinijkidosetektysięcynarzutzmniejszasię,abynakońcu
zniknąćcałkiem.Rozdział3ukazujebardziejrozbudowanyprzykładaplikowania
DI
.
Ichociażtenprzykładjestnadalsuperuproszczonywporównaniudoprawdziwych
aplikacji,możnadostrzec,że
DI
wtakimprzypadkujestowielemniejinwazyjne.
Zrozumiemy,jeśliktośbędzieuważaćprzedstawionyprzykład
DI
zazbytskompli-
kowanypodkąteminżynierii,alewartopomyślećtylkonadtym:wswojejnaturze,kla-
syczneHelloWorldjestprostymproblememzdobrzesprecyzowanymiiograniczonymi
wymaganiami.Wprawdziwymżyciutworzenieoprogramowanianigdyniewygląda
wtensposób.Wymaganiazmieniająsięiczęstoniejasne.Aifunkcjonalności,które
trzebazaimplementować,bywająbardziejzłożone.
DI
pomagawrozwiązaniutychprob-
lemówprzezumożliwienieluźnegowiązania.Wszczególnościzyskujesięnakorzyś-
ciachwypisanychwtab.1.1.