Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

34.6. Lazy Load en Proxy Pattern

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

Wanneer men een object wil inladen, en dit object referenties van andere objecten bevatten, die op hun beurt weer naar andere objecten verwijzen, kan dit ervoor zorgen dat een volledige objectgraph wordt ingeladen.

Toch is het zo dat men niet steeds in al deze objecten geïntresseerd is.  Het zou kunnen dat men slechts intresse heeft voor één bepaald object, en geen intresse heeft voor alle gerelateerde objecten.

Men kan in dergelijke situaties beter de in te laden data beperken tot net voldoende informatie om het object of record te identificeren.  Zo kan op basis van deze identificatiedata het object later - indien noodzakelijk - volledig worden opgehaald.
Dit wordt ook wat men het "lazy load pattern" genoemd.

Een aantal variaties hierop bestaan, een vaak gebruikt is "virtual proxy" ( zie "proxy" GoF pattern).

Een abstract voorbeeld wordt hieronder weergegeven :
Visual Basic 2012 Broncode - Codevoorbeeld 827
Namespace Example1
    MustInherit Class Subject
        Public MustOverride Sub Request()
    End Class
    Class RealSubject : Inherits Subject
        Public Overrides Sub Request()
            Console.WriteLine("RealSubject.Request()")
        End Sub
    End Class
    Class Proxy : Inherits Subject
        Private _RealSubject As RealSubject
        Private ReadOnly Property realSubject() As RealSubject
            Get
                If _RealSubject Is Nothing Then _RealSubject = New RealSubject
                realSubject = _RealSubject
            End Get
        End Property
        Public Overrides Sub Request()
            realSubject.Request()
        End Sub
    End Class
    Class Client
        Public Shared Sub Main()
            Dim s As Subject = New Proxy
            s.Request()
            '
            Console.ReadLine()
        End Sub
    End Class
End Namespace
Console Application Output
RealSubject.Request()
Het echte "subject" object (object van type RealSubject wordt hier pas gecreëerd op het moment dat het echt noodzakelijk is, namelijk het moment waarop deze een Request moet afhandelen.

In de context van data objects zal de proxy reeds de primary-key waarde kennen van het gerelateerde record uit de databasetabel, zodoende bij het inladen van het echte object van deze primary key gebruik te kunnen maken om het juiste record te kunnen inladen.

Soms kan het intressant zijn, meer dan enkel dergelijke primary key te stockeren, en bijvoorbeeld ook nog een beperkte hoeveelheid andere data die waarschijnlijk ook nodig zal zijn.
In dergelijk geval kan men een "light object" creëren, wat ervoor zorgt dat het effectief inladen zo lang mogelijk wordt uitgesteld.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.