定义:确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例。
比较推荐的模式为:饿汉式
public class Singleton {
private Singleton() {
}
private static final Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
}
还有一种模式为懒汉式,但是需要考虑线程安全问题,如果考虑了线程问题又会有效率问题,不如直接使用饿汉式。
但是现实系统种往往会遇到一种情况就是只有一个实例会有点效率问题,但是也不能无限的创建实例,这时候需要限定系统中创建实例的个数,这里可以看成是单例的一种扩展,代码如下:
public class SingletonExtends {
private static int maxInstanceSize = 2;
private static Vector<SingletonExtends> instances = new Vector<SingletonExtends>();
static {
for (int i = 0; i < maxInstanceSize; i++) {
instances.add(new SingletonExtends());
}
}
private SingletonExtends() {
}
public static SingletonExtends getInstance() {
Random random = new Random();
int instanceIndex = random.nextInt(maxInstanceSize);
return instances.get(instanceIndex);
}
}