Diskussionen fortsätter!

Mer om Dependency Injection

I projektet som jag jobbar i just nu så använder vi DI med hjälp av factories istället för att använda en DI container. Vi använder inte heller konstruktor injektion utan använder property injektion. Om man inte aktivt gör en injektion efter att man har skapat objektet så skapas bereondet med Lazy load enligt följande:

Public Class MyClassWithDependency

    Private _myDependency As IMyDependency

    Public Property MyDependency() As IMyDependency
        Get
            If _myDependency Is Nothing Then
                _myDependency = MyDependencyFactory.Create()
            End If
            Return _myDependency
        End Get
        Set(ByVal value As IMyDependency)
            _myDependency = value
        End Set
    End Property

    Public Sub UseDependency()
        Me.MyDependency.Method()
    End Sub
End Class

Fördelen med att använda denna metoden är att man inte överlåter till den anropande klassen att skapa den exekverande klassens beroenden om man inte vill. Att testa klassen är lätt eftersom man kan skapa Mock objekt som injekteras vi propertyn innan man kör testerna.

Nackdelen med vår implementation är att vi behöver skapa en Factory klasserna som skall injekteras.

Advertisements

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