23种设计模式——单例模式

14 篇文章 0 订阅

为什么会出现单例模式

项目中经常会遇到好多个类调用一个类实例的情况,每次调用这个类都要实例化一下也就是new一下,这样就会把原始类里面的数据清空,得不偿失,所以产生了单例模式的这种编程设计模式。

单例模式的目的

单例模式被设计出来就是为了确保一个程序中只有一个实例,并提供一个全集访问点,节省系统资源。

实现单例模式的方法

首先新建一个单例类,把这个单例类的构造函数设置成private,让这个类无法在外部被实例化。

无法从外部实例化,就要从内部实例化,然后在这个单例类里提供一个方法来和外部对接这个实例化的类。也就是说提供一个获取这个实例化的接口函数。

class Class_single
    {
        private Class_single()//类私有化
        {

        }
        static Class_single g_cs = null;
        static object g_locker = new object();
        public static Class_single GetInstance()
        {
            if(g_cs == null)
            {
                lock (g_locker)//锁,为了避免多个线程同时实例化
                {
                    g_cs = new Class_single();
                }
            }
            return g_cs;
        }

    }

单例模式的应用

单例类已经封装完成了,让我们来在这个类里面写一个方法来看看单例是怎么应用
 int num = 0public int AddNum()
        {
            return num++;
        }
然后新建三个类,分别在这三个类中写入一下方法来应用
        public string AddNumString()
        {
            Class_single cs = Class_single.GetInstance();//沟通外部实例化接口
            return cs.AddNum().ToString();
        }
最后再用三个按钮调用这三个类,实现以下内容。

每按一次按钮数字都会累加,并且不管哪个按钮都行。
在这里插入图片描述

如果不用单例模式的话,每次按按钮都会调用一次c1c2c3的类,而c1c2c3类还会实例化一次原始有方法的类,而这样的每次实例化都会把num初始化变成0,所以textbox中显示的数字将会都是0。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值