In einem Modul:
Private objSharedClass As myClass
Public Function GetShared() As myClass
If objSharedClass Is Nothing Then
Set objSharedClass = New myClass
End If
Set GetShared = objSharedClass
End Function
Es ist die VB (A) Umsetzung der Singleton-Muster. Sie müssen sorgfältig überlegen, ob es wirklich angemessen ist, und wenn ja, so ist es die Art und Weise, dies zu tun. Wenn ich es verwende, lege ich normalerweise den obigen Code in ein Modul selbst (außer, wenn ich mehr als einen Singleton in der Anwendung verwende, lege ich sie alle in einem einzigen Modul zusammen). Sie können eine Zerstörung Routine zu dem gleichen Modul hinzufügen und aus Ihrer Anwendung Ausfahrt nennen:
Public Sub CloseSingleton()
Set objSharedClass = Nothing
End Sub
Oder man kann es nur außerhalb des Gültigkeitsbereiches gehen lassen, wenn die Anwendung geschlossen wird - nicht so ordentlich, aber ich habe noch nie Habe gesehen, dass es ein Problem verursacht (ich räume normalerweise auf, aber ...).
EDIT
Usage (für alle Fälle ist es nicht offensichtlich ist). Entweder:
...
Set objLocalCopy = GetShared
DoSomethingWith objLocalCopy.MethodOrProperty
...
Oder:
...
DoSomethingWith GetShared.MethodOrProperty
...
Die erste ist vorzuziehen, wenn Sie vorhaben, die gemeinsam genutzte Klasse mehr als einmal in der Aufruf-Routine zu verwenden, aber die zweite arbeitet für einen einzigen Anruf in Ordnung.
++ und ja, es ist so einfach :) –