Snippet

Návrhový vzor Singleton

Přidáno: 2.1.2008       Kategorie: VB.NET - Algoritmy       Autor: Ondřej Linhart

Šablona pro implementaci návrhového vzoru Singleton. Jedná se o speciální třídu, která může v rámci celé aplikace existovat pouze v jediné instanci a přistupuje se k ní pomocí statické vlastnosti Instance.

Příklad použití:
SingletonTemplate.Instance.Text = "abcde"
Dim text As String = SingletonTemplate.Instance.Text

Dim singleton As New SingletonTemplate()
'Ani se nepřeloží - nelze vytvářet instanci třídy s Private konstruktorem.

Public Class SingletonTemplate
  Private Shared _instance As SingletonTemplate
  Private Shared _lock As New Object()
  Private _text As String
  Private Sub New()
    'Private konstruktor neumožňuje vytvořit instanci třídy zvenčí.
    'Uvnitř třídy to jde.
  End Sub
  'Statická vlastnost pro přístup k instančním členům.
  Public Shared ReadOnly Property Instance As SingletonTemplate
    Get
      'Synchronizace pro případ přístupu z více vláken současně.
      SyncLock (_lock)
        'Vytvoření nové instance třídy ve statické proměnné
        'v případě že neexistuje.
        If _instance Is Nothing Then
          _instance = New SingletonTemplate()
        End If
        Return _instance
      End SyncLock
    End Get
  End Property
  'Příklad instanční vlastnosti.
  Public Property Text As String
    Get
      Return _text
    End Get
    Set (ByVal value As String)
      _text = value
    End Set
  End Property
End Class 
 

VBNET.CZ | © 2007 Tomáš Herceg, Tomáš Jecha | Kopírování a přejímání jakéhokoliv obsahu z tohoto webu je bez písemného svolení autorů zakázáno.