homelinksBlijf op de hoogte van de recente aanpassingen op vbvoorbeelden!
Visual Basic 2010 Voorbeelden

visual basic 2010 broncode voorbeelden

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

35.4. Singleton Pattern

Print Email Deel op Facebook Deel op Twitter

Dit artikel is gepubliceerd op zondag 31 juli 2011 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 2010 Broncode
Class Singleton
    Private Sub New()
    End Sub
    Private Shared m_Instance As Singleton
    Public Shared Function GetInstance() As Singleton
        If m_Instance Is Nothing Then m_Instance = New Singleton
        GetInstance = m_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

35.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 2010 Broncode
Namespace Exercise
    Class Singleton(Of T)
        Private Sub New()
        End Sub
        Private Shared m_Instance As Singleton(Of T)
        Public Shared Function GetInstance() As Singleton(Of T)
            If m_Instance Is Nothing Then m_Instance = New Singleton(Of T)
            GetInstance = m_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 zondag 31 juli 2011 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.