类加载就会导致该单例对象被创建,随着类的加载而创建的,如果该对象足够大的话,而一直没有使用就会造成内存的浪费。

方式一:静态变量方法

eg:

public class Singleton {

//私有构造方法
private Singleton() {};

//在本类中创建本类对象
private static Singleton singleton = new Singleton();

//提供一个公共的访问方式,让外界获取对象
public static Singleton getInstance() {
return singleton;
}

}

方式二:静态代码块方法

eg:
public class Singleton {

//私有构造方法
private Singleton() {};

//在本类中创建本类对象
private static Singleton singleton;

//在静态代码块中赋值
static {
singleton=new Singleton();

}

//提供一个公共的访问方式,让外界获取对象
public static Singleton getInstance() {
return singleton;
}

}

方式三:枚举方法

唯一一种不会被破坏的单例模式,保证了多线程的安全,没有造成性能影响和空间浪费。

eg:

public enum Singleton {
INSTANCE
}