最近在合作开发机房收费系统的时候,想要避免出现子窗体被多次实例化的问题,这个问题一直没有想通怎么解决,最近在网上查相关的资料的时候,找到了解决问题的办法――单例模式。
为什么这么说呢?单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。
其模式结构图如下:

其创建两个类,一个是父窗体MdiParent,一个是子窗体FZ http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcm1DaGlsZKOs1Nq4uLSwzOXJz8ztvNOyy7Wlv9i8/k1lbnVTdHJpcKOsyOfPws28o7o8L3A+CjxwPjwvcD4KPHA+IDxpbWcgc3JjPQ=="https://www.cppentry.com/upload_files/article/49/1_134vq__.png" alt="\">
代码如下:
'定义子窗体的静态变量
Private Shared frmChild As New FormChild
'''
''' 显示子窗体
'''
'''
'''
'''
Private Sub Form1ToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Form1ToolStripMenuItem.Click
Dim frmChild As FormChild = GetChildForm()
frmChild.Show()
End Sub
'''
''' 获得子窗体
'''
'''
'''
Private Function GetChildForm() As FormChild
If frmChild Is Nothing Or frmChild.IsDisposed Then
frmChild = New FormChild
frmChild.MdiParent = Me
End If
Return frmChild
End Function
那么,用单例模式的好处是什么呢?除了它可以保证唯一的实例化,它还可以减少应多次实例化,导致内存空间的浪费。此外,它还可以严格控制客户怎么访问它以及何时访问它,简单得说就是对唯一实例的受控访问。