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.4. Singleton 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.

Onderstaande klasse Singleton illustreert het "singleton-pattern".  Een singleton is een klasse waarvan hoogstens één instantie kan worden gemaakt.

Gebruik dit pattern als je maximaal één object van een bepaalde klasse wenst.

Om ervoor te zorgen dat men niet zomaar een instantie kan maken van de singleton kan men de constructor inkapselen.  De Private constructor kan nu enkel binnen de klasse zelf worden gebruikt.  Een Singleton object dat binnen de klasse wordt gemaakt kan worden opgeleverd via een Shared member.

De member (hier GetInstance()) die de referentie van de Singleton
oplevert zal ervoor zorgen dat maximaal één object wordt aangemaakt :
Visual Basic 2012 Broncode - Codevoorbeeld 824
Class Singleton
    Private Sub New()
    End Sub
    Private Shared _Instance As Singleton
    Public Shared Function GetInstance() As Singleton
        If _Instance Is Nothing Then _Instance = New Singleton
        GetInstance = _Instance
    End Function
End Class
Class Example
    Public Shared Sub Main()
        'Dim singleton0 As Singleton = New Singleton               ' impossible
        Dim singleton1 As Singleton = Singleton.GetInstance()
        Dim singleton2 As Singleton = Singleton.GetInstance()
        Console.WriteLine(singleton1 Is singleton2)                     ' True
        '
        Console.ReadLine()
    End Sub
End Class
Console Application Output
True

34.4.1. Oefening

Opgave :

Creëer een generieke versie van het singleton pattern.  Maak een generieke instantie en schrijf een client die aantoont dat het singleton pattern werkt.

Oplossing :
Visual Basic 2012 Broncode - Codevoorbeeld 825
Namespace Exercise
    Class Singleton(Of T)
        Private Sub New()
        End Sub
        Private Shared _Instance As Singleton(Of T)
        Public Shared Function GetInstance() As Singleton(Of T)
            If _Instance Is Nothing Then _Instance = New Singleton(Of T)
            GetInstance = _Instance
        End Function
    End Class
    Class Person
    End Class
    Class Client
        Public Shared Sub Main()
            'Dim person0 As New Singleton(Of Person)                ' impossible
            Dim person1 As Singleton(Of Person) = _
                                              Singleton(Of Person).GetInstance()
            Dim person2 As Singleton(Of Person) = _
                                              Singleton(Of Person).GetInstance()
            Console.WriteLine(person1 Is person2)                   ' True
            '
            Console.ReadLine()
        End Sub
    End Class
End Namespace
Console Application Output
True

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