當我們使用QQ的時候就會發現,他可以啟動多個QQ,但是有時候,我們不想這樣做,這時候我們就需要使用到單例模式. 1.將Form2的構造函數轉為私有 using System.Windows.Forms; namespace 單例模式 { public partial class Form2 : Fo ...
當我們使用QQ的時候就會發現,他可以啟動多個QQ,但是有時候,我們不想這樣做,這時候我們就需要使用到單例模式. 1.將Form2的構造函數轉為私有
using System.Windows.Forms; namespace 單例模式 { public partial class Form2 : Form { private Form2() { InitializeComponent(); } } }
2.提供一個靜態方法,返回一個對象
using System.Windows.Forms; namespace 單例模式 { public partial class Form2 : Form { private Form2() { InitializeComponent(); } public static Form2 GetSingle() { Form2 form = new Form2(); return form; } } }
3.在Form1中調用
using System; using System.Windows.Forms; namespace 單例模式 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Form2 form = Form2.GetSingle();//new Form2(); form.Show(); } } }
4.在Form2中創建一個單例
using System.Windows.Forms; namespace 單例模式 { public partial class Form2 : Form { //全局唯一的單例 public static Form2 FrmSingle = null;//這是一個靜態的欄位,初值設為null private Form2() { InitializeComponent(); } public static Form2 GetSingle() { if (FrmSingle == null)//做一個判斷,如果FrmSingle為null的時候在創建對象 { FrmSingle = new Form2();//創建完這個對象之後不給Form2,給FrmSingle } return FrmSingle;//返回FrmSingle } } }
做完以上的步驟,運行Form1,不管點幾次創建按鈕,都只是創建的哪一個對象.