方法一:
public class Singleton {
private final static Singleton INSTANCE = new Singleton();
// Private constructor suppresses generation of a (public) default constructor
privateSingleton() {}
publicstaticSingleton getInstance() {
return INSTANCE;
}
}
使用static修饰getInstance,则不需要Singleton实例也能调用getInstance方法(在外面无法通过new获得Singleton实例,然后调用getInstance方法)
标准的Singleton模式并不使用直接静态变量实例化进行声明(它实例化构造器中的一个静态实例变量,而不查看它是否已经存在)
方法二:
public class ClassicSingleton {
private static ClassicSingleton INSTANCE = null;
privateClassicSingleton() {
// Exists only to defeat instantiation.
}
publicstaticClassicSingleton getInstance() { //若是多线程,此方法还可以加上修饰符synchronized,防止同事实例化了多个INSTANCE
if(INSTANCE == null) {
INSTANCE = new ClassicSingleton();
}
return INSTANCE;
}
}
本文深入探讨Java中Singleton模式的实现方式,包括经典的静态内部类方法和优化措施,确保线程安全和避免双重检查锁定带来的性能损耗。

455

被折叠的 条评论
为什么被折叠?



