C#實現單列模式案列
單列模式就是不能夠讓使用者建立多個物件
比如 Form frm = new Form() ,Form obj1 = new Form() ,這裡就建立了兩個Form類的物件
常用的單列模式的建立一般都是,私有化構造器,然後在類中提供公共方法來建立物件,實現單列模式。
用winform簡單實現更直觀
public partial class Form2 : Form
{
private static Form2 fm2 { set; get; }
public static Form2 getSingle() //提供方法建立物件
{
return fm2 == null ? fm2 = new Form2() : fm2; //返回類的物件,如果已經new了物件就直接返回,沒有在建立
}
private Form2() //私有化構造器
{
InitializeComponent();
}
}
Form2,私有化了構造器,提供了一個getSingle()方法來返回物件
public partial class MainForm : Form
{
public MainForm() { InitializeComponent(); }
private void MainForm_Load(object sender, EventArgs e) {}
private void button1_Click(object sender, EventArgs e)
{
Form2 f2 = Form2.getSingle();/
f2.Show();
}
}
在MainForm中的 button1_Click() 方法通過Form2的getSingle(); 方法來建立Form2的物件 ,如圖
當第一次點選button1按鈕是,會建立Form2物件,只要Form2不關閉,在點選就不會建立Form2物件
如果通過直接new的方式建立物件,就是點選按鈕就會建立一個新的物件(窗體)。如下圖
所以用winfrom來實現單列更為直觀。