zoukankan      html  css  js  c++  java
  • 【设计模式】 02、单例模式

    【描述】:Singleton模式要求一个类有且仅有一个实例,并且提供了一个全局的访问点

    【方式1】

    sealed class Singleton
        {
            /// <summary>
            /// 静态只读变量,Instance只会在编译时初始化一次,这就保证了是单例
            /// </summary>
            internal static readonly Singleton Instance = new Singleton();
    
            /// <summary>
            /// 私有构造函数
            /// </summary>
            private Singleton() { }
        }

    这种方式不能实现延迟初始化(调用时才进行初始化),它在编译时就初始化出了一个实例,sealed保证类不能被继承。

    【方式二】

    sealed class Singleton
        {
            // readonly不会被重新实例化
            internal static readonly Singleton Instance = new Singleton();
    
            /// <summary>
            /// 私有构造函数,防止外部new
            /// </summary>
            private Singleton()
            {
            }
    
            /// <summary>
            /// 在创建第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,
            /// 最多只运行一次
            /// </summary>
            static Singleton()
            {
                // 可用于测试什么时候初始化
                Console.WriteLine("...");
            }
        }

    这种方式通过 静态构造函数 实现了延迟初始化。

  • 相关阅读:
    day31-python之内置函数
    day30-python之socket
    day28-python之property
    day27-python之迭代器协议
    day26-python之封装
    day25-python之继承组合
    初识AJAX
    写博客的心得
    web前端常见面试题
    学习网络安全的网站
  • 原文地址:https://www.cnblogs.com/fb-boy/p/3487098.html
Copyright © 2011-2022 走看看