意图:
确保一个类只有一个实例,提供一个全局访问点访问这个实例
优点:
内存中只有一个实例,减少内存开销,尤其是频繁创建和销毁实例时
避免资源的多重占用
缺点:
没有接口,不能继承
与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心实例化方式
懒汉式线程安全:
其实就是将构造方法私有化,只有一个公共方法返回一个实例对象
public class Singleton {
private static Singleton instance;
private Singleton(){
}
public static synchronized Singleton getInstance(){
if(instance==null){
instance = new Singleton();
}
return instance;
}
}
饿汉式线程安全:在创建变量的时候就进行初始化
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}