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;
                        }
                    }
                }
            }
        }
  • 相关阅读:
    什么是知行动手实验室?
    SpringBoot Admin2.0 集成 Java 诊断神器 Arthas 实践
    一文读懂容器存储接口 CSI
    AI 事件驱动场景 Serverless 实践
    一不小心,它成为了 GitHub Alibaba Group 下 Star 最多的开源项目
    5G 和云原生时代的技术下半场,视频化是最大最新的确定性
    基于 RocketMQ Prometheus Exporter 打造定制化 DevOps 平台
    Knative 基于流量的灰度发布和自动弹性实践
    阿里的 RocketMQ 如何让双十一峰值之下 0 故障?
    阿里巴巴开源容器镜像加速技术
  • 原文地址:https://www.cnblogs.com/tqlin/p/1724799.html
Copyright © 2011-2022 走看看