单件模式Singleton Patternvb.net

单件模式(Singleton Pattern)这个模式的技术简单明了:
(1)隐藏认类的构造函数

(2)添加一个共享的成员,以引用单独的、实例化的对象

(3)创建一个公有函数来创建或返回被引用的对象

Public Class Mysingleton
Private Shared m_Instance As Mysingleton
Private Shared m_TimeOfBirth As String
Private Sub New()
Console.WriteLine("Creating Singleton at {0}",Now.ToLongTimeString)
m_TimeOfBirth = Now.ToLongTimeString
End Sub

Public Shared Function GetInstance() As Mysingleton
If m_Instance Is nothing Then
m_Instance = New Mysingleton()
End If
Return m_Instance
End Function

Public ReadOnly Property TimeOfbirth() As String
Get
Return m_TimeOfBirth
End Get
End Property
End Class

Sub Main()
Dim obTest1 As Mysingleton
Dim obTest2 As Mysingleton
Dim i As Integer
obTest1 = Mysingleton.GetInstance()
Console.WriteLine("GetInstance() called at {0} ; obtest1.TimeofBirth()={1}",Now.ToLongTimeString,obTest1.TimeOfbirth)
For i = 1 To 50000000

Next

obTest2 = Mysingleton.GetInstance
Console.WriteLine("GetInstance() called at {0} ; obtest2.TimeofBirth()={1}",obTest2.TimeOfbirth)
MessageBox.Show("click ok to end")

end sub

多线程

Public Class Mysingleton
Private Shared m_Instance As Mysingleton
Private Shared m_TimeOfBirth As String
'多线程安全
Private Shared m_Mutex As New System.Threading.Mutex

Private Sub New()
Console.WriteLine("Creating Singleton at {0}",Now.ToLongTimeString)
m_TimeOfBirth = Now.ToLongTimeString

End Sub

Public Shared Function GetInstance() As Mysingleton
m_Mutex.WaitOne()
If m_Instance Is nothing Then
m_Instance = New Mysingleton()
End If
m_Mutex.ReleaseMutex()
Return m_Instance
End Function

Public ReadOnly Property TimeOfbirth() As String Get Return m_TimeOfBirth End Get End PropertyEnd Class

相关文章

Format[$] ( expr [ , fmt ] ) format 返回变体型 format$ 强...
VB6或者ASP 格式化时间为 MM/dd/yyyy 格式,竟然没有好的办...
在项目中添加如下代码:新建窗口来显示异常信息。 Namespace...
转了这一篇文章,原来一直想用C#做k3的插件开发,vb没有C#用...
Sub 分列() ‘以空格为分隔符,连续空格只算1个。对所选...
  窗体代码 1 Private Sub Text1_OLEDragDrop(Data As Dat...