C#機房重構之單例模式應用
阿新 • • 發佈:2018-12-12
前言
好久沒好好寫部落格了,掐指一算,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>效果展示
有話說
博主的單例模式力求實現功能,方便解決問題。若還想實現更多單例的功能,可以參考曉鴻同學的部落格: