子窗体上巧用单例模式

      最近在合作开发机房收费系统的时候,想要避免出现子窗体被多次实例化的问题,这个问题一直没有想通怎么解决,最近在网上查相关的资料的时候,找到了解决问题的办法——单例模式。

     为什么这么说呢?单例模式是保证一个类仅有一个实例,并提供一个访问它的全局访问点。

     其模式结构图如下:

 

       其创建两个类,一个是父窗体MdiParent,一个是子窗体FormChild,在父窗体上添加菜单控件MenuStrip,如下图:

 

       代码如下:

 '定义子窗体的静态变量
    Private Shared frmChild As New FormChild

    ''' <summary>
    ''' 显示子窗体
    ''' </summary>
    ''' <param name="sender"></param>
    ''' <param name="e"></param>
    ''' <remarks></remarks>
    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

    ''' <summary>
    ''' 获得子窗体
    ''' </summary>
    ''' <returns></returns>
    ''' <remarks></remarks>
    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

        那么,用单例模式的好处是什么呢?除了它可以保证唯一的实例化,它还可以减少应多次实例化,导致内存空间的浪费。此外,它还可以严格控制客户怎么访问它以及何时访问它,简单得说就是对唯一实例的受控访问。

 

评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值