单例模式适用的场景:
1. 经常创建,销毁的对象;
2. 创建费时或者耗资源的对象;
3. 访问数据库的对象。
三种方法:
//懒汉式,装载类的时候进行实例化
class Singleton1{
private final static Singleton1 instance = new Singleton1();
private Singleton1(){
}
public Singleton1 getInstance(){
return instance;
}
}
//双重检查
class Singleton2{
private final static Singleton2 instance;
private Singleton2(){
}
public Singleton2 getInstance(){
if(instance==null){
synchronized(instance.class){
if(instance == null)
instance = new Singleton2();
}
}
return instance;
}
}
//内部类
class Singleton3{
private Singleton3(){
}
class InnerSingleton{
private final static Singleton3 instance = new Singleton3();
}
public Singleton3 getInstance(){
return InnerSingleton.instance;
}
}