What is an efficient way to implement a singleton pattern in Java?问题中,最赞成的答案是使用枚举实现单例。

很好,我理解这些论点以及语言优势。

但是,我有一组我定义单例但需要扩展其他类的类,这对于enum方法来说是不可能的,因为enums无法子类

约书亚·布洛赫(Joshua Bloch)在幻灯片中说:



在大多数情况下,您不应该:有人可以详细说明该吗?我已经实现了几个servlet,它们扩展了HttpServlet,为什么这些不应该是单例呢?我在我的应用程序中只想要它们的一个实例。

最佳答案

Singleton类可以扩展其他类。实际上,在Java中默认情况下,它将始终扩展Object。但是Josh指的是您不应该扩展Singleton类,因为一旦扩展它,就会存在多个实例。

回答评论:

实际上,实现Singleton的最佳方法是:

从有效的Java

// Singleton with static factory
public class Elvis {
private static final Elvis INSTANCE = new Elvis();
private Elvis() { ... }
public static Elvis getInstance() { return INSTANCE; }
public void leaveTheBuilding() { ... }
}

在这里,猫王可以扩展任何其他类别。

07-24 18:25