1. 程式人生 > >C#機房重構之單例模式應用

C#機房重構之單例模式應用

前言

好久沒好好寫部落格了,掐指一算,2個多月了。今天給大家帶來一篇實用的單例模式實現攻略。

 

正文

單例模式的目的

我們的機房重構總是有一個主窗體,在主窗體中開啟其他窗體時,其實只要你願意是可以不斷開啟100個的。但如果這樣,既影響使用者體驗,又無實際意義。這時候應用“單例模式”,讓我們同樣的窗體只能開啟一個~

 

如何實現單例模式

我們拿“修改密碼”窗體舉例,在主介面中只能開啟一個修改密碼窗體

<1>子窗體

修改密碼窗體UI層程式碼如下

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;    //需要新增的名稱空間

namespace UI
{
    public partial class frmStModifyPassword : Form
    {
        public frmStModifyPassword()
        {
            InitializeComponent();
        }


        //應用單例模式
        private static frmStModifyPassword fmpwd;    //frmStModifyPassword是窗體名字
        public static frmStModifyPassword GetInstance()
        {
            if (fmpwd == null || fmpwd.IsDisposed)
            {
                fmpwd = new frmStModifyPassword();
            }
            return fmpwd;
        }

 

<2>主窗體

主窗體UI層程式碼如下

        private void PasswordToolStripMenuItem_Click(object sender, EventArgs e)
        {
            //frmStModifyPassword是窗體名字,GetInstance是我們在子窗體中建立的方法

            frmStModifyPassword frm = frmStModifyPassword.GetInstance();
            frm.Show();
        }

 

<3>效果展示

有話說

博主的單例模式力求實現功能,方便解決問題。若還想實現更多單例的功能,可以參考曉鴻同學的部落格:

【重構】同一個窗體,多次單擊,只顯示一個——單例模式