C#单例模式

允我心安 提交于 2019-11-27 02:15:06
原文:C#单例模式

前言:单例模式是我们在软件开发中比较常用的模式之一,能很好的理解并运用对软件的性能是有很大的帮助的。

一、最简单的单例模式

 

public class Singleton

{

          private static Singleton _instance = new Singleton();

          private Singleton() { }

          public static Singleton GetInstance() { return _instance; }

}
View Code

点评:该种实现,在程序一运行就将对象加载到内存,由于静态变量是常驻于内存不会被GC回收,故该实例化方式适用于经常使用的对象。对象一开始就被实例化了所以在多线程环境下是线程安全的。

 

二、双重锁单例模式

 

    public class Singleton
    {
        private static object obj = new object();
        private static Singleton _singletion;
        private Singleton()
        { }

        public static Singleton Instance
        {
            get
            {
                if (_singletion == null)
                {
                    lock (obj)
                    {
                        if (_singletion == null)
                        {
                            _singletion = new Singleton();
                        }
                    }
                }
                return _singletion;
            }
        }
    }
View Code

点评:双重锁,保证了在多线程环境下对字典或集合的操作是安全的,使用于缓存的读取。

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!