优点
- 只有一个实例,节约内存
- 不用重复生成实例,减少系统性能开销
- 可以全局的资源共享站点
缺点
- 如果手中一直握着某个对象,会导致其无法被回收, 容易造成内存泄漏
实现
最容易的方式
public class A{
private static A instance;//单例
public static synchronized A getInstance(){
if(instance == null){
instance = new A();
}
return instance;
}
}
枚举单例
在java中枚举和class一样,有属性有方法,并且是线程安全的。最NB的是在枚举状态下这个单例是无法通过反序列化构造的,也就是不可复制了。
public enum A{
INSTANCE;
public void todo(){/../}
}