单例模式(Singleton)
单例模式的三个特点
1、该类只有一个实例
2、该类自行创建该实例(在该类内部创建自身的实例对象)
3、向整个系统公开这个实例接口
通常有三种形式
第一种,也是常用的形式
public class Singleton{
private static Singleton instance=null;
private Singleton(){
//私有构造器,防止外部创建
//do something
}
public static Singleton getInstance(){
if(instance==null){
instance= new Singleton();
}
return instance;
}
}//第一次使用时生成实例,提高了效率
第二种形式
public class Singleton{
private static Singleton instance=new Singleton();
private Singleton(){
//do something
}
public static Singleton getInstance(){
return instance;
}
}
第三种形式:双重锁的形式
public class Singleton{
private static Sington instance=null;
private Singleton(){
//do something
}
public static Singleton getInstance(){
if(instance==null){
//同步
synchornized(Singleton.class){
if(null==instance){
instance=new Singleton();
}
}
}
return instance;
}
单例模式的三个特点
1、该类只有一个实例
2、该类自行创建该实例(在该类内部创建自身的实例对象)
3、向整个系统公开这个实例接口
通常有三种形式
第一种,也是常用的形式
public class Singleton{
private static Singleton instance=null;
private Singleton(){
//私有构造器,防止外部创建
//do something
}
public static Singleton getInstance(){
if(instance==null){
instance= new Singleton();
}
return instance;
}
}//第一次使用时生成实例,提高了效率
第二种形式
public class Singleton{
private static Singleton instance=new Singleton();
private Singleton(){
//do something
}
public static Singleton getInstance(){
return instance;
}
}
第三种形式:双重锁的形式
public class Singleton{
private static Sington instance=null;
private Singleton(){
//do something
}
public static Singleton getInstance(){
if(instance==null){
//同步
synchornized(Singleton.class){
if(null==instance){
instance=new Singleton();
}
}
}
return instance;
}
}