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

猜你喜欢

转载自blog.csdn.net/m0_37852399/article/details/83783549
今日推荐