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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值