Один из моих младших программистов создал синглтон, но он действует странно:
Я знаю, что вы не должны получать доступ к объекту, как это, но это то, как они это сделали, и я не могу объяснить,почему это происходит - после вызова удаления экземпляра я ставлю точку останова после строки, и я все еще могу получить доступ к объекту someObject и его свойствам.Этот вид имеет смысл, если вы обращаетесь к объекту mySingleton, а не к myInstance ... поскольку, как вы видите, я не могу объяснить это четко, может кто-нибудь помочь?
например,
Dim x As MySingleton = MySingleton.GetInstance()
x.someObject.int = 5
x.someObject.str = "hello"
Console.Out.WriteLine(x.someObject.int.ToString)
Console.Out.WriteLine(x.someObject.str.ToString)
MySingleton.RemoveInstance()
Console.Out.WriteLine(x.someObject.int.ToString) //still exists!
Console.Out.WriteLine(x.someObject.str.ToString) //still exists!
Вот код Psuedo для синглтона:
Public Class MySingleton
Private Shared _myInstance As MySingleton
Public someObject As New Class1
Public Shared Function GetInstance() As MySingleton
If _myInstance Is Nothing Then
_myInstance = New MySingleton
End If
Return _myInstance
End Function
Public Shared Sub RemoveInstance()
_myInstance = Nothing
End Sub
End Class
Лично я не пишу свои синглеты таким образом - у меня есть объект экземпляра какотдельный класс.но каждому свое.