zoukankan      html  css  js  c++  java
  • 单例模式(Singleton Pattern)

    Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点。这就提出了一个问题:如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?客户程序在调用某一个类时,它是不会考虑这个类是否只能有一个实例等问题的,所以,这应该是类设计者的责任,而不是类使用者的责任。

    C#实现: 

    代码
        /// <summary>
        
    /// 简单实现
        
    /// </summary>
        public sealed class Singleton1
        {
            
    private static Singleton1 instance = null;
            Singleton1() { }
            
    public static Singleton1 Instance
            {
                
    get
                {
                    
    if (instance == null)
                    {
                        instance 
    = new Singleton1();
                    }
                    
    return instance;
                }
            }
        }

        
    /// <summary>
        
    /// 线程安全,双重锁定
        
    /// </summary>
        public sealed class Singleton2
        {
            
    private static Singleton2 instance = null;
            
    static readonly object padlock = new object();
            Singleton2() { }        
            
    public static Singleton2 Instance
            {
                get
                {
                    
    if (instance == null)
                    {
                        
    lock (padlock)
                        {
                            
    if (instance == null)
                            {
                                instance 
    = new Singleton();
                            }
                            
    return instance;
                        }
                    }
                }
            }
        }
  • 相关阅读:
    动态页面技术(JSP/EL/JSTL)
    JavaWeb核心之Servlet
    会话技术Cookie&Session
    待整理
    二进制中1的个数(python)
    矩形覆盖(python)
    变态跳台阶(python)
    跳台阶(python)
    斐波那契数列(python)
    旋转数组的最小数字(python/c++)
  • 原文地址:https://www.cnblogs.com/tqlin/p/1724799.html
Copyright © 2011-2022 走看看