0%

取得一个单例的三种方式

开发中经常需要获取一个单例的对象。本文将介绍得到单例对象的方法。

Early Initialization

1
2
3
4
5
6
7
8
9
10
11
12
public class SingletonEarly {

private final static SingletonEarly instance = new SingletonEarly();

private SingletonEarly() {
}

public static SingletonEarly getInstance() {
return instance;
}

}

使用方式:

1
SingletonEarly.getInstance();

Lazy Initialization

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class SingletonLazy {

private volatile static SingletonLazy instance;

private SingletonLazy() {
// Suppressing creating a new instances
}

public static SingletonLazy getInstance() {
if (instance == null) {
synchronized (SingletonLazy.class) {
if (instance == null) {
instance = new SingletonLazy();
}
}
}
return instance;
}

}

使用方式:

1
SingletonLazy.getInstance();

Enum Singleton

1
2
3
4
5
public enum SingletonEnum {

INSTANCE;

}

使用方式:

1
SingletonEnum.INSTANCE;

总结

单例模式中,使用枚举是最好的方式,原因可以参考单例模式中为什么用枚举更好。不过需要JDK1.5或以上版本支持。

参考文献

  1. Singleton

EOF