gpa*_*ara 18
要创建类的真正单个实例(暗示JVM级别的单例),您应该使您的类成为Java enum.
public enum MyClass {
INSTANCE;
// Methods go here
}
Run Code Online (Sandbox Code Playgroud)
单例模式使用静态,因此在单元测试时通常会导致严重破坏.
约书亚布洛赫的Effective Java的第3项对此进行了解释.
Sha*_*ane 10
非常基本的单身人士.
public class Singleton {
private static Singleton instance;
static {
instance = new Singleton();
}
private Singleton() {
// hidden constructor
}
public static Singleton getInstance() {
return instance;
}
}
Run Code Online (Sandbox Code Playgroud)
您也可以使用惰性持有者模式
public class Singleton {
private Singleton() {
// hidden constructor
}
private static class Holder {
static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return Holder.INSTANCE;
}
}
Run Code Online (Sandbox Code Playgroud)
在访问getInstance()之前,此版本不会创建单例实例,但由于JVM /类加载器处理内部类创建的方式,因此保证只有一次调用构造函数.
| 归档时间: |
|
| 查看次数: |
20130 次 |
| 最近记录: |