单例模式 故名思意 确保类只有一个实例,并提供一个全局访问点
急切创建实例
public class SingleTon(){
private static SingleTon unique=new SingleTon();
private SingleTon(){
}
public static SingleTon getInstance(){
return unique;
}
}
延迟实例化
public class SingleTon{
private static SingleTon unique;
//保证不能通过默认构造函数初始化
private SingleTon(){
}
public static SingleTon getInstance(){
if(unique==null){
unique=new SingleTon();
}
return unique;
}
}
考虑多线程的情况(jdk1.5以上支持volatile)
public class SingleTon{
private volatile static SingleTon unique;
//保证不能通过默认构造函数初始化
private SingleTon(){
}
public static SingleTon getInstance(){
if(unique==null){
synchronized(SingleTon.class){
if(unique==null){
unique=new SingleTon();
}
}
}
return unique;
}
}