zoukankan      html  css  js  c++  java
  • 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>
    {....}
  • 相关阅读:
    hadoop2 作业执行过程之reduce过程
    hadoop2 作业执行过程之map过程
    hadoop2 作业执行过程之yarn调度执行
    scala的下划线
    tomcat 配置系列1
    Windows Server 2008 __ Windows Server 2008R2
    dell技术中心
    戴尔服务器启动和raid设置(以dell r420为例)
    WinPE安装windows(dell r420)
    Red Hat enterprise linux 5.4 x64 + DELL R420 安装网卡驱动 (broadcom 5270)
  • 原文地址:https://www.cnblogs.com/noigel/p/14372135.html
Copyright © 2011-2022 走看看