单例模式
保证一个类只有一个实例。
将对象声明为private static的,构造方法声明为private的,提供一个返回该对象的方法getInstance()。
Class Singleton{
private static Singleton instance;
private Singleton(){}
public static Singleton getInstance(){
if(instance==null){
instance=new Singleton();
}
return instance;
}
}
考虑的问题: 多线程下的单例模式
1. 多线程下单例模式的初始化
Class Singleton{
private static Singleton instance;
private Singleton(){}
private static synchronized syncInit(){
if(instance==null)
instance=new Singleton();
}
public static Singleton getInstance(){
if(instance==null)
syncInit();
return instance;
}
}
2. 多线程下单例模式对实例的修改
(1) 读者写者模式
(2) 影子模式
参考http://blog.csdn.net/shiyanming1223/article/details/6933420