Dependency Injection debatt

Som en förhållandevis ny förespråkare för Dependency Injection(DI) så är debatten om nyttan om DI mycket intressant.

Debatten började med Jacob Proffitt första inlägg med kommentarer. Nate Kohari fortsätter debatten med sitt inlägg och kommentarer. Ayende Rahien är inte sen att hoppa med i leken med inlägg ett och inlägg två.

Visst går det att använda TypeMock för att Mocka ett objekt som inte använder DI men det innebär att du måste ha kunskap om vilka bereonde som objektet har och vilka metoder som man bör Mocka. Med DI så blir detta tydligare, speciellt om det är objekt som du inte har tillgång till källkoden.

Som jag ser det så blir det så mycket tydligare med DI istället för att använda en provider modell som inte tydligt anger vilka beroenden som den providern i sig har.

Advertisements

2 thoughts on “Dependency Injection debatt

  1. Patrik 2007-08-21 / 13:36

    En annan fördel med DI är att du tvingas tänka på separation och har möjlighet att få system med färre hårda dependencies. 

  2. Hakan 2007-08-21 / 20:48

    Nackdelen är dock att man kan få ett hårt beroende till DI containern om man använder en sådan. Jacob har en poäng i att de flesta fallen där man verkligen har nytta av DI är när man vill testa. Personligen tycker jag att detta är en tillräckligt bra anledning.
     
    I mitt nyvarande projekt så använder vi också DI för att via konfiguration kunna styra vilken konkret implementation som används i drift. Skall ett clustrat cacheramverk användas eller ett icke klustrat cacheramverk. Vi styr också via DI om anrop mellan olika applikationslager skall ske inProc eller över WebServices. Detta går givetviss att lösa med hjälp av en provider modell men är tydligare med DI enligt min mening.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s