单例对象通常用来表示一个无状态的实例,如函数,或者本质上是唯一的系统组件。
公有静态成员的方式
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
}
静态工厂的方式
public class Singleton {
public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public Singleton getInstance(){ return INSTANCE; }
}
这两种方式都是需要将构造方法私有化
枚举方式,可防止反序列化时再创建新的对象
public enum Singleton{
INSTANCE
}