MDI——单例模式

来源:互联网 发布:苹果cms整合ck播放器 编辑:程序博客网 时间:2024/05/20 22:27

【前言】

又一次接触到单例模式,原先只是学习了一下理论,现在通过机房个人重构来具体实践一番

【正文】

Why?

 Private Sub ToolStripMenuItemHelp_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemHelp.Click        Dim help As New frmHelp '实例化一个新的frmhelp窗体        help.MdiParent = Me  '定义父窗体为frmMain        help.Show()  '显示刚实例化的窗体    End Sub

每点击一次帮助就生成一个窗口


解决这个问题就用到了——单例模式

What?

保证一个类仅有一个实例,并提供一个访问它的全局访问点

具体内容可以看以前写的一篇博客单例模式

How?

在帮助窗口中写

Public Class frmHelp    Private Shared mdfhelp As frmHelp = Nothing '声明一个共享的变量help    Private Sub New() '就是堵死了外界利用new创建此类实例的可能        ' 此调用是设计器所必需的。        InitializeComponent()        ' 在 InitializeComponent() 调用之后添加任何初始化。    End Sub    Public Shared Function GetInstance() As frmHelp '写一个公有的方法返回新窗体        If mdfhelp Is Nothing OrElse mdfhelp.IsDisposed Then            mdfhelp = New frmHelp            mdfhelp.MdiParent = frmMain.ActiveForm        End If        Return mdfhelp  '返回新的窗体    End FunctionEnd Class
然后在frmMain窗体中写

    Private Sub ToolStripMenuItemHelp_Click(sender As Object, e As EventArgs) Handles ToolStripMenuItemHelp.Click        frmHelp.GetInstance.Show()    End Sub

【总结】

理论联系实际,实践检验理论。