您可以做的一件事是为DatabaseManager 创建一个工厂,然后让所有其他代码从该工厂调用它。我对 VB 语法非常陌生,但在 C# 中它可能看起来像这样:
public class DatabaseManagerFactory
{
private static DatabaseManager _current = null;
public static DatabaseManager Current
{
get
{
if (_current == null) _current = new DatabaseManager();
return _current;
}
}
}
VB
Public Class DatabaseManagerFactory
Private Shared _current As DatabaseManager = Nothing
Public Shared ReadOnly Property Current As DatabaseManager
Get
If _current Is Nothing null Then _current = New DatabaseManager()
Return _current
End Get
End Property
End Class
然后的想法是,您的应用程序中需要使用DatabaseManager 的任何东西都只需调用DatabaseManagerFactory.Current 来获取一个共享实例。
请注意,在这种情况下,DatabaseManager 并不是真正的单例,如果出于某种原因需要,您仍然可以在应用程序的其他地方实例化一个。如果它应该是一个实际的单例,那么您需要对 DatabaseManager 类本身进行一些修改。也许给它一个私有构造函数并直接在类上实现这个工厂?像这样的:
public class DatabaseManager
{
private static DatabaseManager _current = null;
public static DatabaseManager Current
{
get
{
if (_current == null) _current = new DatabaseManager();
return _current;
}
}
private DatabaseManager
{
// your initialization of the class
}
}
VB
Public Class DatabaseManager
Private Shared _current DatabaseManager = Nothing
Public Shared ReadOnly Property Current As DatabaseManager
Get
If _current Is Nothing Then _current = New DatabaseManager()
Return _current
End Get
End Property
Private Sub New()
' your initialization of the class
End Sub
End Class
(我鼓励任何更熟悉 VB 语法的人相应地编辑此答案以更好地解决问题。)