单例模式

单例模式:保证类的实例的唯一,并提供一个访问他的全局访问点. 

场景:

1.在winform我们只让指定窗体打开一次。(如windows任务管理器)

2.打印机可以存在多个任务,但一次只能处理一个任务。

3.一个系统只能有一个单号生成器。

为什么要使用单例这样模式?

比如打开多个windows任务管理器,那么他显示的都是系统的进程,都是一样的,内容一直,对象完全重复,浪费内存资源。

使用单例,提供了全局唯一的使用对象,节约了系统资源,对相同对象的频繁操作肯定是提高了性能。

class Program
    {
        static void Main(string[] args)
        {
            Singleton s1 = Singleton.GetInstance();
            Singleton s2 = Singleton.GetInstance();
            //结果为True对象是一样的,创建类的变量后他们回去堆中找,相同的地址就是指向同一个对象
            Console.WriteLine(s1 == s2); 
        }
    }

    public class Singleton
    {
        //单例模式:保证类的实例的唯一,并提供一个访问他的全局访问点. 
        private Singleton() { }     
        //构造方法的作用就是实例化对象,这里私有不让外部随意创建本类实例.
        //不让外部操作,那就自己生产,自己内部控制自己的实例
        private static Singleton s = null;      
        //外部不能创建,那么怎么提供给外界本类的实例,且只有一个呢?  
        //提供全局的访问点,类名.方法=>静态方法,返回本类对象
        public static Singleton GetInstance()  
        {
            if (s == null)
            {
                //懒汉式,当别人调用的时候,自己在进行加载.
                s = new Singleton();  
            }
            //将实例化后的对象返回给调用者,对象存在堆中,用户继续调用后还是本对象.
            return s;               
        }
    }
单例在应用程序中是静态的,在系统使用的时候需要注意了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值