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来实现单列更为直观。