设计模式-单例模式
1、饿汉式-静态常量
class SingleInstance{
//1.构造函数私有化
private SingleInstance(){
}
//2.内部创建实例对象
private final static SingleInstance instance=new SingleInstance();
//3.公有静态方法获得实例对象
public static SingleInstance getInstance(){
return instance;
}
}
优点:简单;缺点:没有实现懒加载,在类装载时就完成了实例化,可能造成内存浪费。
2、懒汉式
class SingleInstance{
//1、构造方法私有
private SingleInstance(){}
//2、静态属性
private static SingleInstance instance;
//3、在公有方法中创建、返回实例对象;为避免多次创建,同步方法
public static sychronized SingleInstance getInstance(){//每次都需要,低效
if(instance==null){
instance=new SingleInstance();
}
return instance;
}
3、双重检查
class SingleInstance{
//1
private SingleInstance(){}
//2
private static volatile SingleInstance instance;
//3
public static SingleInstance getInstance(){
if(instance==null){//第一次判断null
sychronized(SingleInstance.class){
if(instance==null){//第二次判断null
instance = new SingleInstance();
}
}
}
return instance;
}
}
优点:线程安全、实现了懒加载(延迟加载)、保证效率。多线程推荐使用双重检查