zoukankan      html  css  js  c++  java
  • 设计模式之单例模式

    单例模式:主要关注三点:

    1. 私有化构造器。

    2. 静态公有方法方法,返回唯一实例。

    3. 防止多线程程序并发导致的多实例的问题。

    /// <summary>
        /// 单例模式.
        /// </summary>
        public class Singleton
        {
            private static Singleton instance;
    
            /// <summary>
            /// 程序运行时,创建一个静态只读的进程辅助对象
            /// </summary>
            private static readonly object _object = new object();
    
            /// <summary>
            /// 构造方法私有,外部不能通过New类实例化此类
            /// </summary>
            private Singleton()
            {
            }
            /// <summary>
            /// 静态方法:唯一全局访问点,这里有两个 instance==null的判断
            /// </summary>
            /// <returns></returns>
            public static Singleton GetInstance()
            {
                //先判断实例是否存在,不存在再加锁处理
                if (instance == null)
                {
                    //在同一时刻加了锁的那部分程序只有一个线程可以进入,
                    lock (_object)
                    {
                        //如实例不存在,则New一个新实例,否则返回已有实例
                        if (instance == null)
                        {
                            instance = new Singleton();
                        }
                    }
                }
                return instance;
            }
        }

    还有一种写法:

    不用考虑多线程的问题。代码更简单。

    /// <summary>
        /// 单例模式.
        /// </summary>
        public sealed class Singleton
        {
            private static readonly Singleton instance = null;
    
            /// <summary>
            /// 静态初始化是在 .NET 中实现 Singleton 的首选方法
            /// </summary>
            static Singleton()
            {
                instance = new Singleton();
            }
            private Singleton()
            {
            }
            public static Singleton Instance
            {
                get
                {
                    return instance;
                }
            }
        }
  • 相关阅读:
    linux查看进程命令
    linux修改时区的命令
    深度学习VGG16模型核心模块拆解
    Python之format()函数
    os.path.isfile()的正确用法(正确用法)
    Python time.time()方法
    tf.train.Saver()
    Python3字典update()方法
    图解Numpy的tile函数
    池化层的作用和种类
  • 原文地址:https://www.cnblogs.com/hankuikui/p/6971397.html
Copyright © 2011-2022 走看看