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;
                }
            }
        }
  • 相关阅读:
    常见水果的日语单词汇总
    身体各个部位的日语单词
    多拉A梦——日语歌词
    日语——动词的各种变形
    语言类型学分类
    常用自定义函数
    IOS 读取xib里的子控件
    IOS中 copy ,strong ,weak ,assign使用区别
    IOS 字典转模型
    IOS 纯代码添加 Button Image Label 添加到自定义View中
  • 原文地址:https://www.cnblogs.com/hankuikui/p/6971397.html
Copyright © 2011-2022 走看看