单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

        下面我通过一个实例来介绍一下单利模式到底是怎么应用的。以我近期做的机房收费系统中的例子来说吧。

        首先我们建立了一个Windows应用程序,我们建立一个主窗体:MdiParentUI,我们设置它的属性IsMdiContainer属性为true,表示它是文档界面MDI子窗体的容器,然后建立菜单,这里我们已其中的一个“添加删除用户”菜单(mAddDeleteUser)为例来说明单利模式的使用。

 

        我们将另建的“添加删除用户窗体”命名为:AddDeleteUserUI。

 

       要实现的效果:我每点击一次”添加删除用户“的菜单项,”添加删除用户“窗体就只能显示一次。

 

        通过上述表示,我们知道其实这里的意思就是让”添加删除用户“窗体只有一个实例。显示他是符合单例模式定义的。

 

        代码实现:

Public Class AddDeleteUserUI

    Private Shared m_instance As AddDeleteUserUI = Nothing  '定义一个私有成员变量

    ''' <summary>
    ''' 定义一个私有构造方法
    ''' </summary>
    ''' <remarks></remarks>
    Private Sub AddDeleteUserUI()

    End Sub

    ''' <summary>
    ''' 取得窗体实例的单一入口
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared ReadOnly Property Instance() As AddDeleteUserUI
        Get
            If m_instance Is Nothing Then
                m_instance = New AddDeleteUserUI()
            End If
            Return m_instance
        End Get
    End Property

   End Class


 

''' <summary>
''' 父窗体类
''' </summary>
''' <remarks></remarks>
Public Class MdiParentUI

    
    '添加删除用户窗体
    Private Sub mAddDeleteUser_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mAddDeleteUser.Click
        AddDeleteUserUI.Instance.MdiParent = Me
        AddDeleteUserUI.Instance.Show()   '调用单一入口
    End Sub

    End Class

         这个实例就是运用的单例模式实现了子窗体只实例化一次的效果。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐