【设计模式】 0二、单例模式

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

【方式1】测试

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

        /// <summary>
        /// 私有构造函数
        /// </summary>
        private Singleton() { }
    }

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

【方式二】spa

sealed class Singleton
    {
        // readonly不会被从新实例化
        internal static readonly Singleton Instance = new Singleton();

        /// <summary>
        /// 私有构造函数,防止外部new
        /// </summary>
        private Singleton()
        {
        }

        /// <summary>
        /// 在建立第一个类实例或任何静态成员被引用时,.NET将自动调用静态构造函数来初始化类,
        /// 最多只运行一次
        /// </summary>
        static Singleton()
        {
            // 可用于测试何时初始化
            Console.WriteLine("...");
        }
    }

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

相关文章
相关标签/搜索