页首Html代码

C# 单例模式

静态变量

public sealed class Singleton
    {
        private Singleton() { }

        private static readonly Singleton singleInstance = new Singleton();

        public static Singleton GetInstance
        {
            get
            {
                return singleInstance;
            }
        }
    }

静态构造函数

public class SingletonSecond
    {
        private static SingletonSecond _SingletonSecond = null;

        static SingletonSecond()
        {
            
            _SingletonSecond = new SingletonSecond();
        }
        
        public static SingletonSecond CreateInstance()
        {
            return _SingletonSecond;
        }
    }

延迟加载

public sealed class Singleton
    {
        private Singleton()
        {}

        private static readonly Lazy<Singleton> Instancelock =
                    new Lazy<Singleton>(() => new Singleton());

        public static Singleton GetInstance
        {
            get
            {
                return Instancelock.Value;
            }
        }
    }

 对应的泛型方式

 

    public abstract class SingletonStatic<T> where T:class,new()
    {
        private static T instance = null;
        static SingletonStatic()
        {
            instance = new T();
        }
        public static T GetInstance()
        {
            return instance;
        }
    }

    public class SingletonSafe<T> where T : class, new()
    {
        private static T _instance;
        private static readonly object syslock = new object();
        public static T GetInstance()
        {    //线程安全锁
            if (_instance == null)
            {
                lock (syslock)
                {
                    if (_instance == null)
                    {
                        _instance = new T();
                    }
                }
            }
            return _instance;
        }
    }


    public abstract class Singleton<T> where T:class,new()
    {
        private static T instance;
        public static T GetInstance()
        {
            if (instance == null)
                instance = new T();
            return instance;
        }

    }

使用:

public class GlobalConfiguration : SingletonStatic<GlobalConfiguration>
{....}

 

posted @ 2021-02-04 13:33  noigel  阅读(78)  评论(0编辑  收藏  举报
js脚本