当前位置: 首页 > 面试题库 >

单例模式(Bill Pugh解决方案)

锺离宸
2023-03-14
问题内容

我正在阅读有关单例模式的Wiki,但不确定我是否理解这一点:https : //en.wikipedia.org/wiki/Initialization-on-
demand_holder_idiom的
一部分正确。

如此简单: 为什么Bill Pugh的解决方案比上面的示例更好?

是否是因为VM在实际使用静态类或类似的类之前未将其加载,所以在转到getInstance()方法之前不创建对象?同样,该方法线程仅在初始化对象的程度上安全吗?


问题答案:

我认为Pugh先生的版本受到高度重视,因为它仅在getInstance()被调用时执行单例的实例化,即在加载类(包含getInstance方法的类)时不执行。如果您的单例构造
成本高昂, 那么这可能对您有利。如果您像世界上大多数人那样,单身只是为了避免使用静态方法(并且您还没有进入依赖注入框架),那么我将不会为此沉迷。

如文章所述,Pugh先生的方法比静态实例变量更懒惰-
但实际上,如果加载了Singleton类,则无论如何都将调用getInstance方法。因此,作为计算机科学练习,它是有用的,但在现实世界中,它的好处值得商de。

ps我不太在意Bloch先生在此处的示例,因为使用枚举将是说My Singleton IS-
A枚举,这对我来说听起来并不正确(尤其是从正确地表示从未实现接口的人那里来看)得到常数)



 类似资料:
  • 本文向大家介绍Android 单例模式 Singleton 简单实例设计模式解析,包括了Android 单例模式 Singleton 简单实例设计模式解析的使用技巧和注意事项,需要的朋友参考一下 单例模式 Singleton 简单实例设计模式解析 前言 今天我来全面总结一下Android开发中最常用的设计模式 - 单例模式。 关于设计模式的介绍,可以看下我之前写的:1分钟全面了解“设计模式” 目录

  • 本文向大家介绍C#设计模式之单例模式实例讲解,包括了C#设计模式之单例模式实例讲解的使用技巧和注意事项,需要的朋友参考一下 前言 最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。所谓设计模式,我找了下定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工

  • 本文向大家介绍java 单例模式的实例详解,包括了java 单例模式的实例详解的使用技巧和注意事项,需要的朋友参考一下 java 单例模式的实例详解 概念:    java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。    单例模式有一下特点:   1、单例类只能有一个实例。   2、单例类必须自己自己创建自己的唯一实例。   3、单例类必须给所有其他对

  • 本文向大家介绍解析C#设计模式之单例模式,包括了解析C#设计模式之单例模式的使用技巧和注意事项,需要的朋友参考一下   单例模式(Singleton),故名思议就是说在整个应用程序中,某一对象的实例只应该存在一个。比如,一个类加载数据库中的数据到内存中以提供只读数据,这就很适合使用单例模式,因为没有必要在内存中加载多份相同的数据,另外,有些情况下不允许内存中存在多分份相同的数据,比如数据过大,内存

  • 问题内容: 就像我之前的问题一样,该问题引用了 Effective Java 。这次,我有很多子问题。 特权客户端可以借助该方法以反射方式调用私有构造函数。如果需要对此进行防御,请修改构造函数。 究竟如何调用私有构造函数?那是什么? 您的专家对单身人士采取什么方法? 如果我们每次都要检查新实例还是每次都检查同一个实例,第二种方法难道不是更灵活吗? 如果我尝试克隆类/对象怎么办? 单元素枚举类型是实

  • 主要内容:介绍,实现,SingleObject.java,SingletonPatternDemo.java,单例模式的几种实现方式,实例,实例,实例,实例,实例,实例单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 注意: 1、单例类只