Tag: 单身人士

Java Singleton vs static – 是否有真正的性能优势?

我正在合并一个CVS分支,其中一个较大的更改是替换它出现的Singleton模式,其抽象类具有静态初始化块和所有静态方法。 这是值得保留的东西,因为它需要合并很多冲突,我会考虑什么样的情况才能使这种重构变得有价值? 我们在Weblogic 8.1下运行这个应用程序(所以JDK 1.4.2) 对不起托马斯,让我澄清一下.. HEAD版本具有传统的单例模式(私有构造函数,getInstance()等) 分支版本没有构造函数,是一个“公共抽象类”,并将对象上的所有方法都修改为“静态”。 以前存在于私有构造函数中的代码将移动到静态块中。 然后更改类的所有用法,这会导致合并中出现多个冲突。 有一些情况发生了这种变化。

java Singleton – 通过reflection防止多次创建

我有一个像这样的单身人士。 public class BookingFactory { private final static BookingFactory instance; static { instance = new BookingFactory(); } public static BookingFactory getInstance() { return instance; } private BookingFactory() { System.out.println(“Object is created.”); } } public class Test { BookingFactory instance = BookingFactory.getInstance(); instance = BookingFactory.getInstance(); Class clazz = Class.forName(“com.test.BookingFactory”); Constructor pvtConstructor = clazz.getDeclaredConstructors()[0]; // Set its […]

是否可以将inheritance应用于Singleton类?

今天我在采访中遇到了一个问题。 是否可以在Singleton类上应用inheritance概念? 我说因为构造函数是私有的,所以我们不能扩展那个Singleton类。 他问我的下一件事是在Singleton类上应用inheritance。 因此,我将Singleton的构造函数视为受保护的思想,即child的构造函数也受到保护。 但我错了,孩子可以有一个等于或高于此的修饰符。 所以,我让他给出一个关于这种情况的真实世界的例子。 他无法给我一个,并说我无法提问,并希望我告诉他们这种情况是否可能。 我有点空白。 我的问题是, 这可能吗? 即使有可能,它的用途是什么? 现实世界的情景需要这样的用途?

Singleton什么时候不能作为Singleton工作?

可能重复: 用其他方式破解单身人士 当Singleton不能作为Singleton工作时,有人能告诉我吗?

为什么私有静态字段=新的Singleton在Java中不是懒惰的?

我阅读了很多关于Singleton的文章,其中大多数作者都说Java中的Singleton变种: public class Singleton { private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; } } 不是懒惰 ( EAGER然后 )。 但是我无法理解为什么, Singleton()构造函数只会在Singleton类初始化时被调用。 我知道几个可以触发类初始化的原因: 使用new with constructor(但在这种情况下构造函数是私有的)。 访问或设置静态字段(此处为私有)。 使用静态方法。 使用reflection: Class.forName(“Singleton”) 。 所以这里我们的对象只会在使用静态方法getInstance() (我仍然是LAZY初始化)和reflection时创建(但是reflection可能会破坏很多Singleton变体,除了enum之外)。 也许我看不到明显的东西,请解释一下,我哪里错了?

单身公共静态决赛

我一直在想Java中的单身人士。 按照惯例,单例设置如下: private static MyClass instance = null; public static MyClass getInstance(){ if (instance == null){ instance = new MyClass(); } return instance; } private MyClass(){} 最近我转而使用以下内容: public static final MyClass instance = new MyClass(); private MyClass(){} 由于没有空检查,因此更短,更快,输入MyClass.instance对我来说比输入MyClass.getInstance()更好。 有没有理由说第二种不是主流方式呢?

只有5个类的实例

我希望在整个应用程序生命周期中只有5个类的实例。 我怎样才能做到这一点? 如果可能,请提供示例代码。

Java类的单个实例

我想创建一个类的单个实例。 如何在Java中创建一个类的单个实例?

静态类vs单例类

我知道这个话题已被一遍又一遍地讨论和杀死,但我仍有一个疑问,我希望有人可以帮助我或指导我到SO的预先存在的post。 在传统的C中,静态变量存储在数据段中,局部变量存储在堆栈中。 与局部变量相比,我认为这会使静态变量的存储和维护成本更高。 对? 当试图用Java或C#来理解时,与单例类相比,这对于静态类是不利的吗? 由于整个类在类初始化之前被加载到内存中,所以除非我们有小的内联函数,否则我看不出它有什么优势。 我喜欢Singleton课程,并且不愿意看到它成为一个反模式,我仍然在寻找它带来的所有优点……然后松散于线程安全等论点。 -Ivar

什么时候我们应该在Java中使用Singleton类?

根据我的想法,当我们在整个应用程序中共享相同的对象状态时,我们应该将类创建为Singleton。 在这种情况下,我们希望用户每次都限制创建一个新实例,以便它们不能维持多个状态。 同意。 但是通过将实例变量声明为静态可以实现相同的行为。 对我cacheobjectcontainer ,无论是cacheobjectcontainer , logger还是cacheobjectcontainer Classloader ,它看起来也会起到同样的作用。 请帮助我理解上面的概念静态实例变量无法解决的目的和类需要声明Singleton? 编辑部分 好的,让我更清晰一些。 单例类的目的是在jvm中只保留一个单例类的实例。 同意。 但我试图想出为什么我们只想保留一个实例的原因。 原因有两个: 1)创建对象可能很昂贵。 所以我们只想保留一个实例。 在这种情况下同意将实例变量声明为静态并不能解决任何问题。 2)我们希望跨应用程序共享相同的对象状态。 我认为这是将类声明为单例的主要目的。 但只需将实例变量声明为静态即可实现。 但看起来像1是将任何类声明为静态而不是原因2的主要原因,因为它也可以用静态变量实现。 它是否正确?