标签:构造器 问题: open 时间 版本 des hid public ret
1 package designPatterns; 2 3 public class Singleton { 4 5 //利用一个静态变量来记录类的唯一实例 6 7 private static Singleton uniqueInstance; 8 9 //声明私有构造器,只有本类可以调用该构造器 10 11 private Singleton(){} 12 13 //创建一个静态的方法获取实例对象 14 15 public static Singleton getSingletonObj(){ 16 17 if(uniqueInstance==null){ 18 19 uniqueInstance=new Singleton(); 20 21 } 22 23 return uniqueInstance; 24 25 } 26 27 }
例如:每次都进行同步效率较低,适用于较少适用对象场合
package designPatterns.singleton;
public class Singleton {
//利用一个静态变量来记录类的唯一实例
private static Singleton uniqueInstance;
//声明私有构造器,只有本类可以调用该构造器
private Singleton(){}
//创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)
public static synchronized Singleton getSingletonObj(){
if(uniqueInstance==null){
uniqueInstance=new Singleton();
}
return uniqueInstance;
}
}
public class Singleton {
//利用一个静态变量来记录类的唯一实例
private static Singleton uniqueInstance=new Singleton();;
//声明私有构造器,只有本类可以调用该构造器
private Singleton(){}
//创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)
public static Singleton getSingletonObj(){
return uniqueInstance;
}
}
例如:只有第一次创建对象的时候才进行同步(volatile只用于JDK4.0以上版本)
public class Singleton {
//利用一个静态变量来记录类的唯一实例
private static volatile Singleton uniqueInstance ;
//声明私有构造器,只有本类可以调用该构造器
private Singleton(){}
//创建一个静态的方法获取实例对象(synchronized多线程处理,保证只有一个实例)
public static Singleton getSingletonObj(){
if(uniqueInstance==null){
synchronized(Singleton.class){
uniqueInstance=new Singleton();
}
}
return uniqueInstance;
}
}
标签:构造器 问题: open 时间 版本 des hid public ret
原文地址:http://www.cnblogs.com/jishushijie/p/6169315.html