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>
    {....}
  • 相关阅读:
    Sql server
    分布式爬虫
    爬取某电影网站最新电影
    随笔写一个简单的爬虫
    python的os模块
    基于python的文件处理
    mysql习惯及主从复制参数设置
    git常用命令
    git实习笔记
    微信公众平台开发接口PHP SDK完整版
  • 原文地址:https://www.cnblogs.com/noigel/p/14372135.html
Copyright © 2011-2022 走看看