• 设计模式之一:单例模式SingleTon


     
        
    //单线程下的单例模式    
     
        
    class SingleTon
        {
            
    private static SingleTon _inst;
            
    private static SingleTon() { }
            
    public SingleTon Instance
            {
                
    get
                {
                    
    if (null != _inst)
                    {
                        _inst 
    = new SingleTon();
                    }
                    
    return _inst;
                }
            }
        }
     
        //多线程下的单例模式(饱汉式)
        class SingleTon
        {
            
    private static volatile SingleTon _inst;
            
    private static object lockhelper = new object();
            
    private SingleTon() { }
            
    public SingleTon Instance
            {
                
    get
                {
                    
    if (null != _inst)
                    {
                        
    lock (lockhelper)
                        {
                            
    // 此处使用双重判断防止多线程已经进入第一个判断然后等待解锁后创建实例
                            if (null != _inst)  
                            {
                                _inst 
    = new SingleTon();
                            }
                        }
                    }
                    
    return _inst;
                }
            }
        }
     
        //更简单的实现(饿汉式)
        //readonly 保证实例只能在声明时候或在静态构造器里初始化
        sealed class SingleTon
        {
            
    private SingleTon() { }
            
    public static readonly SingleTon Instance = new SingleTon();
        }
  • 相关阅读:
    C语言拯救计划Day4-2之输出数组元素
    C语言拯救计划Day4-1之查找整数
    团队作业4——项目冲刺之日志集合贴
    团队作业6:复审与事后分析
    Alpha阶段项目复审
    事后诸葛亮分析
    团队作业5——测试与发布(Alpha版本)
    第7篇 Scrum 冲刺博客
    第6篇 Scrum 冲刺博客
    第5篇 Scrum 冲刺博客
  • 原文地址:https://www.cnblogs.com/kakaliush/p/2095142.html
Copyright © 2020-2023  润新知