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>
    {....}
  • 相关阅读:
    学习进度笔记1——安装scala
    随堂测试——数据清洗
    Mapreduce实例——Webcount
    第十七周个人总结
    ppt转为.scr(屏保)
    navicat15 破解
    vue echarts饼图封装以及同一个组件2个饼图不加载问题解决
    阿里云 django+vue前后端分离汇总
    阿里云 django+vue前后端分离 前端打包上传
    阿里云服务器 django+vue前后端分离 nginx配置
  • 原文地址:https://www.cnblogs.com/noigel/p/14372135.html
Copyright © 2011-2022 走看看