|
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 FunctionEnd ClassClass Example Public Shared Sub Main() Dim singleton1 As Singleton = Singleton.GetInstance() Dim singleton2 As Singleton = Singleton.GetInstance() Console.WriteLine(singleton1 Is singleton2) Console.ReadLine() End SubEnd ClassDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
Console Application Output True 35.4.1. OefeningOpgave :
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 person1 As Singleton( Of Person) = _ Singleton( Of Person).GetInstance() Dim person2 As Singleton( Of Person) = _ Singleton( Of Person).GetInstance() Console.WriteLine(person1 Is person2) Console.ReadLine() End Sub End ClassEnd NamespaceDownload Visual Basic 2010 Broncode Download Visual C# Sourcecode
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.
|